Php loggedIn-laravel之后登录路由上的自定义登录重定向
我正在为我的大学创建学生门户 此门户中有多个用户,例如学生、教师、员工和管理人员 我已经成功创建了基于多个用户的自定义登录重定向 例如 当学生登录时,他在localhost:8000/学生/仪表板上重定向,同样,教师在localhost:8000/教师/仪表板上重定向 .. 登录后,LoginController.php工作正常Php loggedIn-laravel之后登录路由上的自定义登录重定向,php,redirect,laravel-5,login,Php,Redirect,Laravel 5,Login,我正在为我的大学创建学生门户 此门户中有多个用户,例如学生、教师、员工和管理人员 我已经成功创建了基于多个用户的自定义登录重定向 例如 当学生登录时,他在localhost:8000/学生/仪表板上重定向,同样,教师在localhost:8000/教师/仪表板上重定向 .. 登录后,LoginController.php工作正常 public function redirectTo() { $userRollId = Auth::user()->user_role_id;
public function redirectTo()
{
$userRollId = Auth::user()->user_role_id;
if( $userRollId == 1)
{
return route('administrationDashboard');
}
elseif ($userRollId == 2) {
return route('teacherDashboard');
}
elseif ($userRollId == 3) {
return route('studentDashboard');
}
elseif ($userRollId == 4) {
return route('departmentalStaffDashboard');
}
elseif ($userRollId == 4) {
return 'departmentalStaff/dashboard';
}
}
但在测试我的应用程序时,我面临着这个问题
那是什么
我以学生身份登录,登录后重新定向
当我点击localhost:8000/登录时进行测试
它重定向到localhost:8000/home
它应该在localhost:8000/学生/仪表板上重定向,但不能:
我认为登录后,LoginController逻辑不适用于此。
也许LoginController逻辑只在我们尝试登录时适用
所以有任何解决方案或建议吗???我假设您正在使用laravel的LoginController。在LoginController中,它将来宾中间件连接到除注销之外的所有路由 因此,您必须将代码添加到\App\Http\Middleware\RedirectIfAuthenticated类 更好的方法是创建一个静态函数:
Class Helper {
public static function redirectByRole($userRollId) {
if( $userRollId == 1)
{
return route('administrationDashboard');
}
elseif ($userRollId == 2) {
return route('teacherDashboard');
}
elseif ($userRollId == 3) {
return route('studentDashboard');
}
elseif ($userRollId == 4) {
return route('departmentalStaffDashboard');
}
elseif ($userRollId == 4) {
return 'departmentalStaff/dashboard';
}
}
}
}
这样称呼它:
从控制器:
从RedirectIfAuthenticated中间件:
您是否使用laravel Auth中间件?检查您的Auth控制器是否有受保护的变量$redirecTo您必须更改它是否在登录路径中使用来宾中间件?请检查是否使用echo$userRollId调用redirecTo函数;死亡请向我们展示您控制器中的登录函数感谢它的工作原理:我只需稍微修改一下您的代码,它的工作原理就如我所愿:RedirectIfAuthenticated.php if Auth::guard$guard->check{$userRollId=Auth::user->user\u role\u id;if$userRollId==1{return redirect->route'administrationDashboard';}……}返回$next$request;}
Class Helper {
public static function redirectByRole($userRollId) {
if( $userRollId == 1)
{
return route('administrationDashboard');
}
elseif ($userRollId == 2) {
return route('teacherDashboard');
}
elseif ($userRollId == 3) {
return route('studentDashboard');
}
elseif ($userRollId == 4) {
return route('departmentalStaffDashboard');
}
elseif ($userRollId == 4) {
return 'departmentalStaff/dashboard';
}
}
}
}
public function redirectTo()
{
$userRollId = Auth::user()->user_role_id;
return Helper::redirectByRole($userRollId);
}
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
$userRollId = Auth::user()->user_role_id;
return Helper::redirectByRole($userRollId);
}
return $next($request);
}