You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Laravel Fortify双因素认证验证码有效期调整为30秒

修改Laravel Fortify双因素认证验证码有效期为30秒的方法

实现原理

Laravel Fortify双因素认证底层依赖pragmarx/google2fa包,默认验证时允许1个时间窗口偏差(每个时间窗口固定为30秒),因此验证码总有效期为前后各30秒共1分钟。要缩短为30秒,仅需将验证时的窗口偏差参数调整为0即可。

操作步骤

  • 第一步:发布Fortify配置文件(如已发布可跳过)
    执行命令:php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"
  • 第二步:重写默认双因素验证逻辑
    打开app/Providers/FortifyServiceProvider.php,在boot方法中添加如下代码:
    use Laravel\Fortify\Actions\RedirectIfTwoFactorAuthenticatable;
    use PragmaRX\Google2FA\Google2FA;
    
    public function boot()
    {
        // 原有Fortify配置保留,新增以下代码即可
        $this->app->when(RedirectIfTwoFactorAuthenticatable::class)
            ->give(function () {
                return new RedirectIfTwoFactorAuthenticatable(
                    $this->app->make(Google2FA::class),
                    0 // 窗口偏差设置为0,仅接受当前30秒窗口的验证码
                );
            });
    }
    
  • 第三步:生效验证
    重新测试双因素认证功能即可,此时验证码会和Google Authenticator同步,每30秒自动过期,超出30秒的旧验证码会直接验证失败。

注意事项

  • 调整为0偏差后需确保服务器时间与客户端时间同步,误差不能超过30秒,否则会出现合法验证码验证失败的问题。
  • 该配置兼容Jetstream全前端栈(Livewire/Inertia),无需额外修改前端代码。

内容的提问来源于stack exchange,提问作者Xer0x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:36:03