laravel - Laravel 7强制用户输入密码
问题描述
我想知道如何强制用户在某些路由操作中重新输入他的密码?
假设用户想在保存过程发生之前编辑产品,他必须输入他的密码,如果密码正确,则允许保存。
laravel 7 中是否有默认的密码中间件?还是我应该自己做?你有什么建议?
更新
我发现了这个,但它只适用于网络路由,我需要同样的东西来处理 API 路由。
这个中间件的问题在于它sessions
只能在 Web 中间件上使用。我试图添加\Illuminate\Session\Middleware\StartSession::class,
到api
中间件,但仍然收到此错误
RuntimeException:未按请求设置会话存储。
解决方案
对于那些偶然发现这一点的人,解决方案是设置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
推荐阅读
- angular - 使用 Angular4/bootstrap 获取切换按钮的值
- php - 使用 PHP 数组中的 optgroup 生成下拉列表
- r - 根据 tibble 的条件进行变异或过滤
- python - Python 布尔值等
- node.js - Sequelize 已创建表的关联不起作用
- css - 额外的@font-face 不起作用?404错误
- android - RxJava2 + Retrofit 2 顺序 API 调用出现错误 NetworkOnMainThreadException
- php - 加载到视图时的PHP格式化
- angular - 自定义 Angular 4 验证器取决于动态值
- azure - 在 cosmosdb 中查询子文档的成本是多少?