laravel - 无法覆盖 laravel 默认的身份验证用户名方法
问题描述
Laravel 框架 5.6.38
我正在尝试将默认用户名身份验证检查从“电子邮件”更改为“id”,因此我将用户名()方法放在用户模型文件中以覆盖默认用户名方法
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password','id'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function username()
{
return 'id';
}
}
它不适合我。除非我从 laravel 供应商文件 Illuminate\Foundation\Auth\AuthenticatesUsers.php 更改它
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return 'kocid';
}
登录现在可以工作,但是当我运行 composer update 时,文件返回到默认值,所以我需要一个解决方案来使用用户模型成功覆盖此方法。
解决方案
根据文档,https://laravel.com/docs/5.6/authentication#authentication-quickstart ......你应该在你的LoginController
public function username()
{
return 'id';
}
推荐阅读
- javascript - 仅使用 javascript 使表格行可点击,但不能点击标题
- c - 使用 Char 作为选项的 C 切换菜单中的错误,不会读取 fgets 名称
- ios - iOS 重定向到设置主页
- c - 无法使用 C 程序编译 libcurl 库
- ios - UITableViewcontroller 子类需要应用 Padding left 和 Right
- python - 是否可以基于多个字符串特征进行聚类
- robotframework - 如何参数化机器人框架中的 Open Browser 关键字以从命令行无头运行?
- database - 更改数据库中所有表的主键数据类型
- java - 在 C++ 和 JAVA 中发现相同字符串的 SHA-1 不同
- scala - 尽管我正在获取输入指标,但没有使用 Scala 在 Spark 2.4 中获取 Dataframe writer 保存操作的输出指标