首页 > 解决方案 > 覆盖 laravel 强化 TwoFactorLogin

问题描述

我希望用户在成功完成 2FA 过程后被重定向到他们的仪表板。我使用了与使用正常登录响应相同的方法,您可以像这样覆盖它

<?php

namespace App\Http\Responses;

use Illuminate\Support\Facades\Auth;
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;

class LoginResponse implements LoginResponseContract
{

    public function toResponse($request)
    {
        return redirect()->route('dashboard.index', ['user' => Auth::user()]);
    }
}

然后在 FortifyServiceProvider 注册方法中注册它

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

我尝试对 TwoFactorLogin 执行相同的方法,所以我创建了一个 TwoFactorResponse 类

<?php

namespace App\Http\Responses;

use Illuminate\Support\Facades\Auth;
use Laravel\Fortify\Contracts\TwoFactorLoginResponse as TwoFactorLoginResponseContract;

class TwoFactorResponse implements TwoFactorLoginResponseContract
{
    public function toResponse($request)
    {
        return redirect()->route('dashboard.index', ['user' => Auth::user()]);
    }
}

并在ServiceProvider中注册

        $this->app->singleton(
            \laravel\Fortify\Contracts\TwoFactorLoginResponse::class,
            \App\Http\Responses\TwoFactorResponse::class,
        );

但是,当用户按下双重身份验证页面上的登录按钮时,用户将被重定向回来自 RouteServiceProvider 的默认主页public const HOME = '/';,在我的例子中是登录页面。

甚至可以覆盖 TwoFactorLogin 还是我搞砸了?

标签: laravel

解决方案


推荐阅读