登录Laravel中的多个角色后重定向
我试图在登录后重定向到特定页面。我在LoginController类的LoginController文件中有这段代码登录Laravel中的多个角色后重定向,laravel,redirect,login,roles,Laravel,Redirect,Login,Roles,我试图在登录后重定向到特定页面。我在LoginController类的LoginController文件中有这段代码 public function authenticated($request , $user){ if($user->rol=='Administrador'){ return redirect()->route('home') ; }elseif($user->rol=='Docente'){ return re
public function authenticated($request , $user){
if($user->rol=='Administrador'){
return redirect()->route('home') ;
}elseif($user->rol=='Docente'){
return redirect()->route('balance') ;
}else {
return redirect()->route('profile');
}
}
此外,我还将路由放在了web.php文件中
当我尝试查看此函数是否有效时,问题就出现了,因为当我介绍一个校友用户时,它应该重定向到profile,但它不会尝试使用
switch
语句
public function authenticated($request , $user){
switch ($user->rol){
case 'Administrador':
return redirect()->route('home') ;
case 'Docente':
return redirect()->route('balance') ;
default:
return redirect()->route('profile') ;
}
}
在
LoginController.php
文件中(在运行php artisan make:auth
时生成),有一个处理该文件的属性
protected $redirectTo = '/home';
删除此属性,并添加具有相同名称的方法
public function redirectTo(){
// Code here
}
redirectTo方法将优先于redirectTo属性。这允许我们定义逻辑来处理具有不同角色的用户到不同路径
public function redirectTo(){
// User role
$role = Auth::user()->role->name;
// Check user role
switch ($role) {
case 'Manager':
return '/dashboard';
break;
case 'Employee':
return '/projects';
break;
default:
return '/login';
break;
}
}
来源:Laravel Middleware完成了您在这里试图完成的工作。看看你的角色何时是
校友
,它重定向到了哪里?它重定向到/home你在LoginController
类中使用了authenticateUsers
特性吗?把它放在LoginController
文件中,在authenticated
函数中,就这样?我不必在路由文件中放入任何内容不,我有这个路由::get('/profile',Auth\LoginController@authenticated')->name('profile');因为如果我没有出现错误,请尝试dd($user->rol)
在public function authenticated($request,$user)
下的LoginController
类可以被覆盖。只有@Anais在LoginController
类中使用AuthenticatesUsers
特征时,这个答案才有效(也是最好的IMHO)。是的,我在我的LoginController文件中使用这个类,我看到的是,这不起作用,因为用户的角色不在同一个表userOK,那么您可以调整$role
的定义。可能类似于下面的$role=Auth::user()->relationship->column代码>