首页 > 解决方案 > Laravel 7强制用户输入密码

问题描述

我想知道如何强制用户在某些路由操作中重新输入他的密码?

假设用户想在保存过程发生之前编辑产品,他必须输入他的密码,如果密码正确,则允许保存。

laravel 7 中是否有默认的密码中间件?还是我应该自己做?你有什么建议?

更新

我发现了这个,但它只适用于网络路由,我需要同样的东西来处理 API 路由。

这个中间件的问题在于它sessions只能在 Web 中间件上使用。我试图添加\Illuminate\Session\Middleware\StartSession::class,api中间件,但仍然收到此错误

RuntimeException:未按请求设置会话存储。

标签: laravel

解决方案


对于那些偶然发现这一点的人,解决方案是设置config('password_timeout')为 1 即 1 秒。

'password_timeout' => 1,

您可能认为将它设置为 0 应该可以工作,但它没有,这是因为Illuminate\Auth\Middleware\RequirePassword类的构造函数中的这一行

$this->passwordTimeout = $passwordTimeout ?: 10800;

未设置 (null) 或 0时默认$this->passwordTimeout为 3 小时。config('password_timeout')

RequirePassword 中间件正在类的registerRequirePassword方法中绑定到应用程序容器Illuminate\Auth\AuthServiceProvider


推荐阅读