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

Laravel 9 password.confirm中间件失效问题求助

Laravel password.confirm中间件未触发密码确认的排查方案
  • 检查会话中的密码确认有效期
    Laravel的password.confirm中间件默认会记录用户最近一次确认密码的时间(存储在session的password_confirmed_at键中),默认有效期为1小时。如果请求发起时该时间仍在有效期内,中间件会直接放行。可以通过清除浏览器缓存/会话,或等待1小时后重新测试,确认是否触发密码确认流程。

  • 确认中间件配置正确性
    确保在app/Http/Kernel.php的$routeMiddleware中正确注册官方提供的中间件:

    protected $routeMiddleware = [
        // ... 其他中间项
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
    ];
    

    若你自定义了同名中间件,可能逻辑不符合预期,需替换为官方自带的RequirePassword类。

  • 确认请求处于web会话环境
    password.confirm中间件依赖Laravel的Session功能,需确保目标路由处于web中间件组内(默认routes/web.php中的路由已包含该组)。如果是routes/api.php中的API路由,由于默认无Session支持,中间件无法正常工作,需手动为API路由添加Session中间件(不推荐,API场景通常采用Token认证)。

  • 验证请求类型与中间件逻辑匹配
    当访问需要密码确认的POST路由时,若用户未在有效期内确认过密码,中间件会自动重定向到密码确认页面(GET请求password/confirm)。用户在该页面提交密码验证通过后,才会被重定向回原POST路由并执行控制器逻辑。若你通过Postman等工具直接发起POST请求,需先确保会话中已完成密码确认,或先发起GET请求到password/confirm页面、提交密码后再发起目标POST请求。

内容的提问来源于stack exchange,提问作者Md. Shamvil Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:38:26