为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 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 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号