亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 laravel 中為管理員和其他人單獨登錄?

如何在 laravel 中為管理員和其他人單獨登錄?

PHP
九州編程 2022-07-22 17:06:48
我需要為其他用戶和管理員進行兩次不同的登錄。我做了兩個不同的登錄控制器。對于管理員,我嘗試覆蓋嘗試登錄功能AdminLoginController.php public function attemptLogin(Request $request)    {        $this->guard()->attempt(            $this->credentials($request), $request->filled('remember')        );        $user = $this->guard()->user();        $admin = $user->hasRole('admin');        if($admin){            return true;        }        else{            return false;        }    }但這使用戶同時為用戶管理員和其他用戶登錄。提前致謝!
查看完整描述

3 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

這對我有用。


public function attemptLogin(Request $request)

    {


        $this->guard()->attempt(

            $this->credentials($request), $request->filled('remember')

        );

        $user = $this->guard()->user();

        $admin = $user->hasRole('admin');


        if($admin){

            return true;

        }

        else{

            $this->guard()->logout();

            return false;

        }


    }


查看完整回答
反對 回復 2022-07-22
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

最簡單的方法是在config/auth.php.


    'guards' => [

        'web' => [ // default guard

            'driver' => 'session',

            'provider' => 'users',

        ],


        'api' => [

            'driver' => 'token',

            'provider' => 'users',

            'hash' => false,

        ],


        'admin' => [

            'driver' => 'session',

            'provider' => 'admin',

        ],

    ],


'providers' => [

        'users' => [

            'driver' => 'eloquent',

            'model' => App\User::class,

        ],


        'admin' => [

            'driver' => 'eloquent',

            'model' => App\Admin::class,

        ]

    ],

App/Admin.php 類是您的管理 eloquent 類, App/User.php 是您的用戶 eloquent 類。這種方式假設管理員和用戶在數據庫中獲得了單獨的表。當然,您還應該通過以下兩種方式之一在 AdminLoginController 中使用管理員防護:


放protected $guard = 'admin';

放public function guard(){

        Auth::guard('admin');

    }


查看完整回答
反對 回復 2022-07-22
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

您可以在管理員的登錄操作中進行檢查,如下所示,我正在共享我在我的一個項目中使用的代碼。希望你能理解,我也添加了評論


public function login(Request $request){

    if(auth()->user()){

        $user = auth()->user()->toArray();

        $role = Role::where('_id', new \MongoDB\BSON\ObjectID($user["role_id"]))->first(); 

        if($role) $role = $role->toArray();

        if(!empty($role)){

            // Prevent other users to enter admin area by checking the role

            if(strtolower($role['name']) != 'admin'){

                Auth::logout();

                \Session::flash('errors', 'You are not authorized to access admin area.' );

                return redirect(url('/admin/login'));   

            }else{

                return redirect(url('/admin')); 

            }



        }else{

            Auth::logout();

            \Session::flash('errors', 'Invalid user role' );

            return redirect(url('/admin/login'));

        }   

    }

    return view('admin/index/login');   

}

如果管理員以外的任何用戶嘗試登錄管理區域,通過檢查角色強制他們注銷系統


查看完整回答
反對 回復 2022-07-22
  • 3 回答
  • 0 關注
  • 127 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號