【问题标题】:Redirect Laravel 8 Fortify重定向 Laravel 8 Fortify
【发布时间】:2021-11-29 16:22:19
【问题描述】:

使用 Laravel 8 Fortify 登录后,我需要一些重定向方面的帮助。我知道如何在登录控制器中执行此操作,但使用 Fortify 时有一个 LoginResponse,我不确定如何执行此操作。我知道在 RouteService Provider 中我可以将其更改为任何位置,但我有一些角色,我想根据角色重定向到不同的仪表板。
在旧的登录控制器中,我会执行以下操作。我如何将其更改为 Fortiy 的 LoginResponse?

public function redirectTo()
    {
            if(Auth::user()->hasRole('admin')){
                $this->redirectTo = route('admin.dashboard');
                return $this->redirectTo;
            }
            if(Auth::user()->hasRole('manager')){
                $this->redirectTo = route('manager.dashboard');
                return $this->redirectTo;
            }
            if(Auth::user()->hasRole('employee')){
                $this->redirectTo = route('employee.dashboard');
                return $this->redirectTo;
            }
    }

【问题讨论】:

  • 以下是否回答了您的问题或者您仍有问题?

标签: laravel redirect laravel-fortify


【解决方案1】:

您可以通过绑定您自己的LoginResponse 实现来将Customize RedirectsFortify 绑定。您可以将以下内容添加到您的FortifyServiceProviderregister 方法中:

use Laravel\Fortify\Contracts\LoginResponse;

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
    $this->app->instance(LoginResponse::class, new class implements LoginResponse {
        public function toResponse($request)
        {
            if($request->user()->hasRole('admin')){
                return redirect()->route('admin.dashboard');
            }
            if($request->user()->hasRole('manager')){
                return redirect()->route('manager.dashboard');
            }
            if($request->user()->hasRole('employee')){
                return redirect()->route('employee.dashboard');
            }
        }
    });
}

如果您愿意,可以随时在实际文件中创建类,而不是使用anonymous class


这里有一个Laravel News post,其中包含更多细节。

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 1970-01-01
    • 2021-03-13
    • 2021-01-10
    • 2021-01-13
    • 2021-09-29
    • 1970-01-01
    • 2022-01-10
    • 2021-02-02
    相关资源
    最近更新 更多