Ale*_*tet 5 php laravel laravel-8
这在类 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',
];
}
}
Run Code Online (Sandbox Code Playgroud)
但是我无法在供应商中进行自定义。
我的问题是如何做到这一点?
Ben*_*ett 10
以下是您在使用 Fortify 进行身份验证时如何使用自己的验证规则:
LoginRequest.php在 App\Http\Requests 中创建一个扩展 FortifyLoginRequest.php类的文件我只需复制该类并更新名称空间:
namespace App\Http\Requests;
use Laravel\Fortify\Http\Requests\LoginRequest as FortifyLoginRequest;
use Laravel\Fortify\Fortify;
class LoginRequest extends FortifyLoginRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
Fortify::username() => 'required|string',
'password' => 'required|string',
'myAttribute' => 'rules' // Customizations...
];
}
}
Run Code Online (Sandbox Code Playgroud)
AppServiceProviders.php以使用您自己的类解析 Fortify 的类:public function boot()
{
$this->app->bind('Laravel\Fortify\Http\Requests\LoginRequest', \App\Http\Requests\LoginRequest::class);
}
Run Code Online (Sandbox Code Playgroud)
小智 9
只是为了补充上面的评论,如前所述在供应商文件夹中进行更改是一个坏主意。一方面,任何推送到存储库的代码都不会反映这些更改(除非您修改了忽略文件)。
对于 Laravel/Fortify 添加新字段和更改默认验证规则,甚至密码要求也非常简单。我不清楚您的要求是什么,但简单地使用验证器可能更容易。这也是 Fortify 所使用的。例如,Fortify 发布两个文件:
App\Actions\Fortify\CreateNewUser.php
App\Actions\Fortify\PasswordValidationRules.php
Run Code Online (Sandbox Code Playgroud)
要为字段添加新的验证规则,只需将它添加到 Fortify 本身正在使用的 Validator::make 方法下的 CreateNewUser.php。您可以在自定义实现中遵循相同的逻辑。比如添加一个firstname字段,修改如下:
Validator::make($input, [
'firstname' => ['required', 'string', 'max:255'],
])->validate();
return User::create([
'firstname' => $input['firstname'],
]);
Run Code Online (Sandbox Code Playgroud)
您可以根据需要添加任意数量的字段。要更改密码要求,请对 PasswordValidationRules.php 文件中的 passwordRules() 函数进行如下更改:
protected function passwordRules()
{
return ['required',
'string',
(new Password)->requireUppercase()
->length(10)
->requireNumeric()
->requireSpecialCharacter(),
'confirmed'];
}
Run Code Online (Sandbox Code Playgroud)
所有这些信息都可以在官方文档https://jetstream.laravel.com/1.x/features/authentication.html#password-validation-rules 中找到
小智 -3
我找到了该页面:https://dev.to/aibnuhibban/login-customization-in-laravel-8-2gc8
转到供应商 > laravel > fortify > src > 规则 > Password.php
在那里你可以更改这些配置。
| 归档时间: |
|
| 查看次数: |
3197 次 |
| 最近记录: |