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

Laravel 8.61.0 Auth::attempt报Undefined index: password错误排查

问题原因

Auth::attempt() 方法约定传入的凭证数组中必须包含password键,该键是Laravel身份验证系统固定读取的凭证键名,和你数据库中存储密码的字段名无关。你当前传的是password_hash键,系统读取不到password索引就会抛出对应的错误。
另外你提前对密码做哈希的操作也是多余的,Auth::attempt() 会自动将传入的明文密码做哈希运算,和数据库存储的哈希值做比对,提前哈希会导致二次哈希永远匹配不上验证。

修复方案

修改LoginController.php中authenticate方法的代码即可,你之前在User模型中通过getAuthPassword()指定从password_hash字段读取存储的密码哈希的逻辑是正确的,不需要修改:

public function authenticate(Request $request)
{
    $request->validate([
        'username' => ['required'],
        'password' => ['required'],
    ]);

    $user = [
        'username' => $request['username'],
        // 把键名改成password,传入明文密码即可
        'password' => $request['password']
    ];

    if (Auth::attempt($user)) {
        $request->session()->regenerate();
        return redirect()->intended('/');
    }

    return back()->with('fail', 'Login fail');
}

内容的提问来源于stack exchange,提问作者Bear Au Jus - ジュースとくま

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:48:00