Laravel 默认邮箱登录改成用户名登录的实现方法


Posted in PHP onAugust 12, 2019

Laravel中默认的登录是通过邮箱和密码进行登录的。那么,怎么样才能用最少的改动将它改成用密码登录呢?

默认的,Laravel使用的是 Illuminate\Foundation\Auth\AuthenticatesUsers 这个trait完成登录功能的。通过观察 AuthenticatesUsers 的代码,发现下面一段很有意思的代码:

protected function validateLogin(Request $request)
  {
    $this->validate($request, [
      $this->username() => 'required|string',
      'password' => 'required|string',
    ]);
  }
  public function username()
  {
    return 'email';
  }

可以看到,是 因 为trait里定义了用户名就是email,所以才会使得验证的时候通过用户邮箱验证。 所以我们只需要定义一个trait,覆盖 AuthenticatesUsers 中的 username() 方法即可实现后端代码通过用户名验证登录。

新增的trait代码

namespace App\Utils;

use Illuminate\Foundation\Auth\AuthenticatesUsers as LaravelAuthenticatesUsers;
trait AuthenticatesUsers {
 use LaravelAuthenticatesUsers;
  public function username()
  {
    return 'name';
  }
}

其实还有另一个简单的修改方式,直接在LoginController中新增 username() 方法。由于当前定义方法会覆盖trait的方法,因此也能达到修改的目的。但是会破坏登录代码的整体一致性,所以最好还是通过新增trait的方式实现。

同时要记得修改前端blade文件中对输入参数的验证,然后就可以使用用户名登录了

Laravel 默认邮箱登录改成用户名登录的实现方法

总结

以上所述是小编给大家介绍的Laravel 默认邮箱登录改成用户名登录的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
提高PHP编程效率 引入缓存机制提升性能
Feb 15 PHP
基于PHP开发中的安全防范知识详解
Jun 06 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 PHP
浅析php适配器模式(Adapter)
Nov 25 PHP
php抽象类使用要点与注意事项分析
Feb 09 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
thinkphp实现分页显示功能
Dec 03 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
php链式操作的实现方式分析
Aug 12 #PHP
基于PHP实现微信小程序客服消息功能
Aug 12 #PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 #PHP
PHP基于swoole多进程操作示例
Aug 12 #PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 #PHP
php使用pecl方式安装扩展操作示例
Aug 12 #PHP
PHP实现与java 通信的插件使用教程
Aug 11 #PHP
You might like
PHP 批量删除 sql语句
2009/06/05 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHP 类与构造函数解析
2017/02/06 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python 元类实例解析
2018/04/04 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python K近邻算法的kd树实现
2018/09/06 Python
python求质数的3种方法
2018/09/28 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
俄语专业毕业生推荐信
2013/10/28 职场文书
财务方面个人工作的自我评价
2013/12/28 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
化验员岗位职责
2015/02/14 职场文书
清明扫墓感想
2015/08/11 职场文书
高二数学教学反思
2016/02/18 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
python的html标准库
2022/04/29 Python