Laravel Fortify 没有触发 2FA 挑战?

Bor*_*ign 5 laravel fortify

我已经使用 Laravel Fortify 为我的应用程序编写了一些身份验证,并且我已经设置了 2FA 的启用部分,一切正常,但我遇到的问题是,当用户登录?

我已经像这样设置了自定义视图;

        Fortify::twoFactorChallengeView(function () {
            return view('auth.two-factor-challenge');
        });
Run Code Online (Sandbox Code Playgroud)

Fortify 声称它应该“...自动将用户重定向到应用程序的两因素身份验证质询屏幕。” (https://laravel.com/docs/9.x/fortify#authenticating-with-two-factor-authentication),但对我来说情况并非如此,它根本不重定向。

似乎无法在源代码中找到任何类型的中间件来手动实现此目的,所以想知道是否有人知道发生了什么?

我已经手动检查了我的数据库,并且所有两个因子列two_factor_secret在启用后都设置正确,所以我有点困惑。

在我的 fortify 配置中,我进行了以下设置,因为我不想确认密码,而是确认当前的 OTP 代码以进行任何需要进行的更改,因为我认为这对我的应用程序最有意义。不确定禁用是否confirmPassword会导致这种情况?

Features::twoFactorAuthentication([
            'confirm' => true,
            'confirmPassword' => false,
        ]),
Run Code Online (Sandbox Code Playgroud)

Xyb*_*ril 2

今天刚遇到这个问题,在网上找了半天解决办法。然后我看到这篇文章(https://epndavis.com/blog/laravel-fortify-two-factor-authentication/),它表明该confirm属性未包含在其片段之一中。幸运的是,在我尝试之后,登录最终触发了 2FA 挑战。

因此,您的代码现在应该如下所示:

Features::twoFactorAuthentication([
     'confirmPassword' => false,
]),
Run Code Online (Sandbox Code Playgroud)

如果您已经解决了这个问题,我希望这个答案能够帮助其他人解决这个问题并继续进行开发的其他部分。

附言。作为 的替代品confirm,我建议访问这篇文章:https://dev.to/nicolus/laravel-fortify-implement-2fa-in-a-way-that-won-t-let-users-lock-themselves -out-2ejk

工作示例: https: //github.com/xyberpastoril/PCBMS/pull/6