如何根据 Laravel 8 中的用户角色或权限重定向到不同的视图?

How can I redirect to different views based on user role or privilege in Laravel 8?

我将下面的功能放在 LoginController class 中以将用户重定向到不同的视图,登录后我得到了这个 419|expired第.

protected function authenticated(Request $request, $user) {
    if ($user->PRIVILEGE == 'C') {
        return redirect()->route('/users');
    } else if ($user->PRIVILEGE == 'B') {
        return redirect('/blog');
    } else {
        return redirect('/');
    }
}

查看 app\Http\Middleware\RedirectIfAuthenticated.php 中的 handle 方法,您会发现在用户通过 Auth 检查后,他们会收到重定向。

此 class 旨在将用户重定向到正确的 landing 页面,一旦通过身份验证。

    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            $user = Auth::user();
            if ($user->PRIVILEGE == 'C') {
                return redirect()->route('/users');
            }
            if ($user->PRIVILEGE == 'B') {
                return redirect('/blog');
            } 
            return redirect('/');
        }

        return $next($request);
    }
  1. 首先将其放入您的 LoginController class: use Illuminate\Support\Facades\Auth;

  2. 注释掉这一行 protected $redirectTo =... 并将此功能添加到 LoginController class:

    public 函数 redirectPath() {

    if(Auth::user()->privilege =='C'){
    
      return '/users';
    }
    if(Auth::user()->privilege=='B'){
    
      return '/blog';
    }    
    

    }