我有两种类型的登录,Admin和Customer。 如果想通过admin credintals登录客户仪表板,它会赢得登录,这就是我想要的,但是如果我使用客户信用卡登录会将我重定向到客户仪表板,但如果我想在同一时间打开管理仪表板,它将重定向在没有检查角色ID的情况下,我没有检查管理仪表板,该代码必须是1而不是2,如下代码所示:
管理员:信息中心\ LoginController
public function postLogin(request $request){
$auth=auth::guard('web')->attempt(['email'=>$request->email,'password'=>$request->password,'active'=>1,'role_id'=>1]);
if($auth)
{
return redirect()->route('dashboard');
}
return view('Dashboard.login');
}
public function getLogin(){
if(Auth::guard('web')->check()){
return redirect()->route('dashboard');
}
return view('Dashboard.login');
}
客户:customer \ LoginController
public function postLogin(request $request){
$auth=auth::guard('web')->attempt(['email'=>$request->email,'password'=>$request->password,'active'=>1,'role_id'=>2]);
if($auth)
{
return redirect()->route('customer');
}
return redirect()->route('/');
}
public function getLogin(){
if(Auth::guard('web')->check()){
return redirect()->route('customer');
}
return view('index.mainpage.home');
}
答案 0 :(得分:0)
在我看来,只有在完成身份验证后才应该处理,然后应用决定根据用户的角色将用户重定向到正确的路由:)
这只是一次检查,不是每次请求检查>>这是中间件的工作。
AuthenticatesUsers
个authenticated
特征中有一个名为protected function authenticated(Request $request, $user)
的方法,其LoginController
签名可以在/**
* The user has been authenticated.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
if ($user->hasRole('admin')) {
return redirect('/admin');
} else {
return redirect('/');
}
}
内覆盖它。您可以检查用户的角色,然后将其重定向到正确的位置。
举个例子:
/admin
<强>更新强>
我们有两种情况(据我所知):
场景1 :用户(有任何类型)登录该站点,我们想将他重定向到相应的面板(例如,如果他有管理员角色,那么将他重定向到管理面板)。
场景2 :如果普通用户转到403 Forbidden
,我们希望阻止他访问管理面板并重定向回主页或面临composer require squizlabs/php_codesniffer --dev
错误页。
在第一个场景中,您可以通过检查用户的角色来重定向用户(我已在上面解释过)。
在第二种情况下,您需要一个管理路由组的中间件来检查用户的角色,如果它不是管理员用户,那么重定向或中止它。
答案 1 :(得分:0)
$这 - &GT;中间件( 'AUTH:管理员');