php - 如何覆盖验证规则登录 Laravel\Fortify?
问题描述
这在 Laravel\Fortify\Http\Requests\LoginRequest 类中描述了
我想再添加一个验证行
namespace Laravel\Fortify\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Laravel\Fortify\Fortify;
class LoginRequest extends FormRequest
{
/..
public function rules()
{
return [
Fortify::username() => 'required|string',
'password' => 'required|string',
];
}
}
但我无法在供应商中进行自定义。
我的问题是如何做到这一点?
解决方案
只是添加到上面的评论中,如前所述在供应商文件夹中进行更改是一个坏主意。一方面,任何推送到存储库的代码都不会反映这些更改(除非您修改忽略文件)。
对于 Laravel/Fortify 添加新字段和更改默认验证规则,即使是密码要求也非常简单。我不清楚您的要求是什么,但简单地使用验证器可能更容易。这也是 Fortify 使用的。例如,Fortify 发布了两个文件:
App\Actions\Fortify\CreateNewUser.php
App\Actions\Fortify\PasswordValidationRules.php
要为字段添加新的验证规则,只需将其添加到 Fortify 本身正在使用的 Validator::make 方法下的 CreateNewUser.php 即可。您可以在自定义实现中遵循相同的逻辑。例如添加一个名字字段,修改如下:
Validator::make($input, [
'firstname' => ['required', 'string', 'max:255'],
])->validate();
return User::create([
'firstname' => $input['firstname'],
]);
您可以根据需要添加任意数量的字段。要更改密码要求,请更改 PasswordValidationRules.php 文件中的 passwordRules() 函数,如下所示:
protected function passwordRules()
{
return ['required',
'string',
(new Password)->requireUppercase()
->length(10)
->requireNumeric()
->requireSpecialCharacter(),
'confirmed'];
}
所有这些信息都可以在官方文档https://jetstream.laravel.com/1.x/features/authentication.html#password-validation-rules中找到
推荐阅读
- macos - 在 MacOS Big Sur 上更新后 git 没有运行
- elasticsearch - 无法通过filebeat将日志发送到Kubernetes中的logstash
- permissions - 从数据洞察访问数据时,数据集级别的 BigQuery 数据查看者权限与项目级别的权限有何区别?
- java - SpringBoot骆驼单元测试导致camelContext错误
- go - 转换为 DataResponse 的参数过多
- sql - 如何在 SQL 中对一组自定义计算字段求和?
- intellij-idea - 如何打开在 Intellij 中导出的图表?
- mongodb - 是否有任何标准工具可以在启动期间使用 Spring Boot 更新 MongoDB 集合?
- javascript - ReactJs:由于不推荐使用componentWillMount,如何在组件安装之前执行代码?
- excel - 如何让我的代码在任何工作表上运行