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 模拟$_PUT实现代码
Mar 15 PHP
php更改目录及子目录下所有的文件后缀的代码
Sep 24 PHP
深入密码加salt原理的分析
Jun 06 PHP
解析php中memcache的应用
Jun 18 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 PHP
php实现RSA加密类实例
Mar 26 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
thinkPHP5.0框架安装教程
Mar 25 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
PHP反射学习入门示例
Jun 14 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
PHP 数组教程 定义数组
2009/10/23 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
js实现文字截断功能
2016/09/14 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
python requests 使用快速入门
2017/08/31 Python
Python模拟三级菜单效果
2017/09/11 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
python实现简单图片物体标注工具
2019/03/18 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
《小草和大树》教学反思
2014/02/16 职场文书
成人继续教育实施方案
2014/03/01 职场文书
早会主持词
2014/03/17 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书