我目前正在学习Laravel,这是一个全新的领域。所以您可能会遇到任何类型的错误(对此感到抱歉),尽管我对PHP感到满意。我试图搜索解决我的问题的方法,但是找不到。因此,请为我排除故障。
问题
我有2位用户,他们都有特定的角色。一个用户的角色是Admin
,另一个用户的角色是Teacher
。现在,如果管理员登录,则必须将他重定向到/admin
,否则,如果用户登录的不是管理员(即他可能是教师),则应将他重定向到/home
。>
为此,我在文件handle()
内的app\Http\Middleware\RedirectIfAuthenticated.php
方法中编写了以下代码。
if (Auth::guard($guard)->check()) {
switch ( Auth::user()->role->name ) {
case 'Admin':
return redirect('/admin');
break;
default:
return redirect( '/home' );
break;
}
}
return $next($request);
现在,当我尝试通过管理员用户或非管理员用户登录时,在两种情况下,每次都将我重定向到/home
,而不是如果我是通过管理员登录,则重定向到/admin
。开关可能不起作用。现在,如果我通过编写dd( Auth::user()->role->name )
打印用户的角色,它将返回预期的结果,如果登录的用户是admin,则返回Admin
;如果登录的用户是非管理员,则返回Teacher
您可以在https://github.com/ahmedcgr/academy-ms
上检查我的项目文件任何类型的解决方案/提示/线索都可以理解。
更新 而不是使用
if (Auth::guard($guard)->check()) {
switch ( Auth::user()->role->name ) {
case 'Admin':
return redirect('/admin');
break;
default:
return redirect( '/home' );
break;
}
}
return $next($request);
我移除了开关,然后代码如下所示
if (Auth::guard($guard)->check()) {
return redirect('/admin');
}
return $next($request);
它仍将我重定向到/home
。这表明开关/条件可能没有问题。