Laravel自定义模型登录时Auth::attempt报“Undefined array key password”错误
Laravel自定义模型登录报错及Auth密钥配置解答
一、解决"Undefined array key 'password'"错误
1. 修正凭证数组的键名
Laravel的Auth::attempt()方法默认期望凭证数组中包含小写的password键,你当前传入的是首字母大写的Password,这会导致系统找不到对应的密码字段。修改控制器代码中的凭证部分:
function NewUser_homePost(Request $request) { // 修正键名为小写的password $credentials = $request->only('Username', 'password'); if (Auth::attempt($credentials)) { return redirect(route('New_Home'))->with("success", "Logged in successfully"); } return redirect(route('Home'))->with("error", "Login details are not valid"); }
2. 自定义模型的密码字段适配(可选)
如果你的数据库表中密码字段确实是大写的Password,需要在自定义模型中重写getAuthPassword()方法,指定密码字段名:
use Illuminate\Foundation\Auth\User as Authenticatable; class YourCustomModel extends Authenticatable { // 你的模型配置... /** * 获取用于认证的密码字段 * * @return string */ public function getAuthPassword() { return $this->Password; } }
二、关于Auth系统的密钥配置
Laravel Auth系统依赖应用密钥(APP_KEY),该密钥存储在项目根目录的.env文件中,对应APP_KEY字段。它主要用于:
- 加密用户会话数据
- 生成密码重置令牌、记住我令牌等安全凭证
- 加密敏感的Auth相关数据
如果你的项目没有生成APP_KEY,可以通过Artisan命令生成:
php artisan key:generate
Auth系统没有单独的"存储密钥"配置,所有加密相关的操作都依赖这个APP_KEY。
内容的提问来源于stack exchange,提问作者John Lyons
相关产品推荐
相关产品推荐

