繁体   English   中英

Laravel 8 中如何自定义默认登录错误信息

[英]How do you customize the default login error message in laravel 8

我正在浏览网页并寻找有关如何在 Jetstream 登录时修改此错误消息的解决方案:

在此处输入图片说明

app/Actions/Fortify有一个文件CreateNewUser.php ,我可以在其中在每个字段上放置一些验证自定义消息,如下所示:

 public function create(array $input)
    {
        Validator::make($input, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'phone' => ['required', 'string', 'max:17'],
            'password' => $this->passwordRules(),
            'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
        ],[
            'name.required'=>'Name is required',
            'email.required'=>'Email is required',
            'phone.required'=>'Phone is required',
        ])->validate();

但是, Login.php没有。 我在网上搜索并看到了有关vendors/laravel/fortify/src/Actions/AttemptToAuthenticate.php但它包含大量代码,我不知道在哪里放置自定义:

   public function handle($request, $next)
    {
        if (Fortify::$authenticateUsingCallback) {
            return $this->handleUsingCustomCallback($request, $next);
        }

        if ($this->guard->attempt(
            $request->only(Fortify::username(), 'password'),
            $request->filled('remember'))
        ) {
            return $next($request);
        }

        $this->throwFailedAuthenticationException($request);
    }

有没有一种简单的方法可以在 Laravel 8 中为不同的自定义消息自定义“电子邮件字段是必需的”?

卡了几个小时。

您可以使用Fortify::authenticateUsing方法在App > Providers自定义FortifyServiceProvider ,它应该从boot方法调用。

public function boot()
{
    Fortify::authenticateUsing(function (Request $request) {
        $user = User::where('email', $request->email)->first();

        if ($user &&
            Hash::check($request->password, $user->password)) {
            return $user;
        } else {
            $request->session()->flash('message', 'Invalid!');
            return false;
        }
    });
}

参考

转到登录请求类中的供应商文件夹 vendor\\laravel\\fortify\\src\\Http\\Requests\\LoginRequest.php 创建一个函数,就像创建请求类一样。 public function messages(){ 自定义消息,例如 'email.required' => 'email required'}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM