0

我正在寻找一个很好的教程或建议,关于如何在基于 laravel 8 fortify 没有 jetstream 的角色进行身份验证后重定向。我找到了一个说要在 App\Http\Responses\loginresponse.php 中创建一个新的 LoginResonse.php,但我不确定在哪里注册这个新响应,因为我使用的教程说要在 Jetstreamserviceprovider 中进行,但是我没有使用 Jetstream。有任何想法吗?

4

1 回答 1

0

您将希望在 中注册您的自定义LoginResponseFortifyServiceProvider特别是boot方法。

public function boot()
{
    $this->app->singleton(
        \Laravel\Fortify\Contracts\LoginResponse::class,
        \App\Http\Responses\LoginResponse::class
    );
}

这会将您的自定义注册LoginResponse到 Laravel IoC 服务容器,并通知 Laravel 提供您的LoginResponseto 方法,这些方法需要实现LoginResponsefrom的对象实例Fortify

在您的自定义LoginResponsetoResponse方法中,您可以执行您需要的任何逻辑。例如;

public function toResponse($request)
{
    if ($request->wantsJson()) {
        return response()->json(['two_factor' => false]);
    }

    if (Auth::user()->hasRole('admin') {
        return redirect(route('admin.index'));
    }
}
于 2021-06-16T07:50:41.327 回答