Vue JS/Laravel 身份验证失效问题排查求助
Laravel身份验证失败问题修复
核心问题分析与解决步骤
1. 密码未哈希存储
Laravel的auth()->attempt()方法会自动对传入的密码进行哈希校验,但你的数据库中password字段存储的是明文admin123,导致校验不匹配。
解决方法:
- 生成哈希密码替换数据库中的明文密码:
运行Artisan Tinker生成哈希值:
将输出的哈希字符串替换数据库php artisan tinker echo Hash::make('admin123');accounts表中admin用户的password字段值。 - 后续注册用户时,必须使用
Hash::make()对密码哈希后再存入数据库。
2. 主键字段未显式指定
Laravel默认模型主键为id,但你的表主键是user_id,这会导致认证过程中模型查询异常。
解决方法:
在User模型中添加主键指定:
protected $primaryKey = 'user_id';
3. 认证用户名字段配置错误
Laravel默认使用email作为认证的用户名标识字段,而你使用的是username,需要修改配置或模型方法。
解决方法二选一:
- 方法一:修改User模型
添加自定义认证字段方法:public function getAuthIdentifierName() { return 'username'; } - 方法二:修改配置文件
编辑config/auth.php,在providers的users配置中指定用户名字段:'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, 'username' => 'username', ], ],
4. 额外验证点
- 检查请求参数是否正确传递:在控制器中临时添加打印语句,确认
username和password参数是否被正确接收:public function sign_in(Request $request) { dd($request->only('username', 'password')); // 验证参数 // ... 原有逻辑 } - 确认User模型的
$fillable属性已包含username和password字段(当前配置已满足)。
内容的提问来源于stack exchange,提问作者PentaD
相关产品推荐
相关产品推荐

