php - 怎样使artisan make:auth生成的登录注册功能中登录可以多字段查询登录?
PHPz
PHPz 2017-04-11 09:08:38
0
2
344

请问在laravel框架中,使用artisan make:auth生成登录注册功能只能通过邮箱登录,那么如何更改代码,使其能够既能用用户名也能用邮箱,还能用电话登录。看了相关文档,没有想出来解决办法。请问大神们知道如何更改么?

  1. 一定是在make:auth的基础上修改。

  2. 给出修改的思路也行。

PHPz
PHPz

学习是最好的投资!

모든 응답 (2)
小葫芦

该问题已经解决,解决方案如下:
在AuthController控制器中,use那两个trait的下面,添加如下代码

/** * 设置登录时前端页面提交的“用户名”的变量名为$login * * @var string */ protected $username = 'login'; /** * 重写获得登录数据的getCredentials方法,判断第一条数据的类型 * * @param Requset $request * @return array */ protected function getCredentials(Request $request){ $login = $request -> get('login'); $middle = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'name'; $field = filter_var($login, FILTER_VALIDATE_INT) ? 'phone' : $middle; return [ $field => $login, 'password' => $request->get('password'), ]; }

此方法重写了引入的AuthenticatesAndRegistersUsers类中引入的AuthenticatesUsers类中的getCredentials方法,该方法作用是返回login方法中调用的的attempt方法验证信息所使用的$credentials数组变量。要注意,最终$field索引变量所对应的$login变量必须与数据库中users表中所需要的字段一致。

    左手右手慢动作

    AuthenticatesUsers.php 里面的

    protected function validateLogin(Request $request) { $this->validate($request, [ $this->loginUsername() => 'required', 'password' => 'required', ]); }

    你看上面 他只对用户名和密码做了必填的验证 至于emial类型并没做验证 所以看html代码

    看上面的type类型 email 你改成text就可以填写任何了 但是如果你想验证手机啥的需要自己写

    我也不知道对不对 没去验证 也才刚开始学习 反正他就那么几个文件 你可以看他登录到底执行了哪些方法

      최신 다운로드
      더>
      웹 효과
      웹사이트 소스 코드
      웹사이트 자료
      프론트엔드 템플릿
      회사 소개 부인 성명 Sitemap
      PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!