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

Laravel中数据库密码列为password_hash时,如何用Auth::attempt登录?

Laravel自定义登录密码字段实现方法

当然可以,你只需要在User模型中重写getAuthPassword()方法,指定返回自定义的密码字段值即可,和重写username()方法的思路一致。

具体代码示例:

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    // 若已重写用户名字段,保留即可
    public function username()
    {
        return '你的用户名字段名';
    }

    // 重写密码字段逻辑
    public function getAuthPassword()
    {
        return $this->password_hash;
    }
}

完成模型修改后,Auth::attempt()就能正常使用了,调用时依然传入password作为输入密码的键名,框架会自动通过重写的方法获取数据库中的password_hash字段值进行验证:

if (Auth::attempt(['你的用户名字段名' => $request->username, 'password' => $request->password])) {
    // 登录成功后的业务逻辑
}

原理是Laravel的认证系统在验证密码时,会调用用户模型的getAuthPassword()方法获取存储的密码哈希值,所以重写该方法就能指定自定义的密码字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:25:19