首页 > 解决方案 > 登录多个角色和不同视图后如何重定向

问题描述

我有问题重定向登录不同的视图。在我的情况下,当管理员登录重定向到仪表板管理员时,以及当用户登录重定向到用户页面时。我正在使用 laravel 8。这是我的登录控制器

protected $redirectTo = '/home';
public function redirectTo()
{
    $role = Auth::user()->role;
    switch ($role) {
        case 'admin':
            return '/admin';
            break;
        case 'user':
            return '/user';
            break;

        default:
            return '/home';
            break;
    }
}

我的中间件

  {
    if (!Auth::check()) // This isnt necessary, it should be part of your 'auth' middleware
        return redirect('/home');

    $user = Auth::user();
    // echo $user;
    if ($user->roles == $role)
        return $next($request);

    return redirect('/home');
}

我的控制器

Route::get('/', function () {
return view('auth.login');

});

我的路线

Auth::routes();


Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/user', [UserController::class, 'index'])->name('user')->middleware('role:user');
Route::get('/admin', [AdminController::class, 'index'])->name('admin')->middleware('role:admin');

标签: authenticationlaravel-8

解决方案


我猜想用户模型的角色属性是一个角色列表。而且,当您将角色列表与单个角色进行比较时,条件总是错误的。


推荐阅读