laravel实现多字段登录

in Laravel with 0 comment

前言

官方默认生成的登录模式使用的是邮箱登录,虽然可以修改 username 来更换登录字段,但是,我总觉的这样很麻烦,所以加了一个多字段登录。 之前总是尝试动态修改 username 的值,这种方法不值得推荐,所以我修改了一些代码

首先 ,修改前端字段值,将 email 修改为 account(自取)

打开 Illuminate\Foundation\Auth\AuthenticatesUsers 可以看到 login 方法

也可通过 php artisan route:list 查看登录 路由方法

  1. 修改 验证 字段

     $this->validate($request, [
         'account' => 'required|string',
         'password' => 'required|string',
     ],[
         'account.required' => '用户名或者邮箱不能为空'
     ]);
    

validate 可以添加三个值,第一个是参数,第二个是规则,第三个是提示错误信息

  1. 修改 attemptLogin 方法

     protected function attemptLogin(Request $request)
     {
         $field = filter_var($request->account,FILTER_VALIDATE_EMAIL) ? 'email' : 'name';
         $request->merge([$field => $request->account]);
         return $this->guard()->attempt(
             $request->only($field , 'password'), $request->filled('remember')
         );
     }
    

filter_var 过滤器, 返回一个布尔值

  1. 修改 username 为 account 对应的是前端的表单字段
Comments are closed.