我正在为我的大学创建学生门户网站。
此门户网站中有多个用户,例如学生,教师,员工和&施用
我已成功创建基于Multiply Users的自定义登录重定向 例如 当学生登录时,他重定向到localhost:8000 / student / dash-board同样的老师重定向在localhost:8000 / teacher / dash-board .. ..
LoginController.php(登录后完美运行)
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';
}
}
但在测试我的应用程序时,我遇到了问题。
高级就是这样 我以学生身份登录并在登录后重定向 http://localhost:8000/student/dash-board
当我点击localhost:8000 / login时进行测试 它重定向到localhost:8000 / home 它应该重定向到localhost:8000 / student / dash-board但不是:(
我认为LoginController逻辑在登录后不适用于此。 也许LoginController逻辑只在我们尝试登录时才应用。
所以有任何解决方案或建议吗?
答案 0 :(得分:1)
我假设您使用的是LoginController
laravel。在LoginController
中,它将guest
中间件附加到除logout
(Check Here)之外的所有路由。
所以你必须将代码添加到\App\Http\Middleware\RedirectIfAuthenticated
类。
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
$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';
}
}
return $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);
}
来自RedirectIfAuthenticated
中间件:
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);
}