You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6修改默认认证字段名:用户名生效密码不生效问题求助

解决Laravel 5.6 修改默认认证密码字段无效的问题

我之前也踩过Laravel 5.6改密码字段名不生效的坑,给你梳理下几个必须调整的关键环节,确保密码验证和哈希匹配能正常工作:

1. 修正认证配置文件的字段映射

打开config/auth.php,找到providers下的users配置项,除了你已经改好的username,一定要加上自定义密码字段的映射:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
        'table' => 'users',
        'username' => '你的自定义用户名', // 你已完成的配置
        'password' => '你的自定义密码字段', // 比如改成`passwd`
    ],
],

2. 重写User模型的密码获取方法

Laravel认证系统默认会找password字段做哈希比对,咱们需要在App\User.php里重写getAuthPassword()方法,指定自定义的密码字段:

public function getAuthPassword()
{
    return $this->你的自定义密码字段; // 例如 return $this->passwd;
}

这个方法是认证时获取用户密码的核心入口,没改的话系统永远只会找默认的password字段,这也是很多人踩坑的关键点。

3. 调整登录请求的验证与凭证逻辑

如果你用的是默认的LoginController,需要重写两个方法来适配自定义密码字段:

  • 重写validateLogin(),确保验证规则里的密码字段正确:
protected function validateLogin(Request $request)
{
    $request->validate([
        $this->username() => 'required|string',
        '你的自定义密码字段' => 'required|string', // 替换成你的字段名
    ]);
}
  • 重写credentials(),让认证系统从请求里读取正确的密码字段:
protected function credentials(Request $request)
{
    return [
        $this->username() => $request->input($this->username()),
        '你的自定义密码字段' => $request->input('你的自定义密码字段'),
    ];
}

4. 确认数据库密码的哈希正确性

最后要确保数据库里的密码是用Laravel自带的Hash::make()生成的,并且存储在你的自定义字段里。比如创建用户时:

User::create([
    '你的自定义用户名' => 'test_user',
    '你的自定义密码字段' => Hash::make('test123456'),
]);

如果是手动存入明文或者用了其他哈希方式,必然会出现「These credentials do not match our records」的提示。

按照这几步调整后,应该就能正常完成登录验证了。我当初就是漏了重写getAuthPassword()方法,折腾了好久才找到问题所在,你可以重点检查这个环节。

内容的提问来源于stack exchange,提问作者mytDRAGON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:42:47