如何在 laravel 中为管理员和其他人单独登录?

我需要为其他用户和管理员进行两次不同的登录。我做了两个不同的登录控制器。对于管理员,我尝试覆盖尝试登录功能


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;

        }


    }

但这使用户同时为用户管理员和其他用户登录。提前致谢!


九州编程
浏览 103回答 3
3回答

慕桂英546537

这对我有用。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;        }    }

蓝山帝景

最简单的方法是在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');    }

守候你守候我

您可以在管理员的登录操作中进行检查,如下所示,我正在共享我在我的一个项目中使用的代码。希望你能理解,我也添加了评论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');   }如果管理员以外的任何用户尝试登录管理区域,通过检查角色强制他们注销系统
打开App,查看更多内容
随时随地看视频慕课网APP