3 回答

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;
}
}

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');
}

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');
}
如果管理員以外的任何用戶嘗試登錄管理區域,通過檢查角色強制他們注銷系統
- 3 回答
- 0 關注
- 127 瀏覽
添加回答
舉報