如何将哈希密码存入数据库?Laravel代码问题求助
问题解决思路
你的问题出在两个核心点:一是没有将哈希后的密码赋值回原数组,二是变量名不一致(注入的UserService实例是$user,但你用了未定义的$userService调用方法)。以下是具体修正方案:
1. 修正store方法的变量与密码赋值
在store方法中,调用hashPassword后,必须把返回的哈希密码覆盖原数组里的password字段,才能让后续的createUser使用哈希后的值:
public function store(RegistrationRequest $request, UserService $userService) { // 获取验证通过的字段数据 $userData = $request->correctValidate(); // 将哈希后的密码赋值回数组的password字段 $userData['password'] = $userService->hashPassword($userData['password']); // 传入更新后的数组创建用户 $userService->createUser($userData); }
2. 优化方法参数命名(可选但建议)
createUser方法的参数名$request容易和请求对象混淆,建议改为更清晰的命名,避免歧义:
public function createUser($userData): void { User::create($userData); }
3. 模型字段验证(必查)
确保你的User模型已经在$fillable属性中包含password字段,否则create方法会因为批量赋值限制忽略这个字段:
class User extends Model { protected $fillable = [ 'name', 'email', 'password', // 必须包含该字段 // 其他允许批量赋值的字段 ]; }
内容的提问来源于stack exchange,提问作者Deks2
相关产品推荐
相关产品推荐

