具有内置身份验证的用户模型螺丝上的setPasswordAttribute,如何更正?

时间:2017-06-27 06:18:29

标签: php laravel

我创建了CRUD来管理我的应用中的用户。现在,我的问题是我正在使用User::create(request()->all()),我在我的模型中实现了setPasswordAttribute方法,该方法自动加密密码,并且运行良好......但是......

我刚刚发现这与使用了ResetsPasswords的auth使用的一些Laravels内置特征相混淆。所以我实现setPasswordAttribute方法实际上导致auth脚手架开始双重加密密码,导致用户在重置密码后尝试登录时失败。

为了清洁代码,我想知道我能纠正这个问题的最佳方法。我知道我可以使用save代替create,但我希望尽可能保持控制器的小巧。

处理此问题的最佳方法是什么?我想的只是简单地加密实际请求输入的值,但这看起来很糟糕。

1 个答案:

答案 0 :(得分:1)

您可以在html表单中为此字段使用其他名称,例如plain_password,然后使用具有此名称的mutator改变password字段。 这样,您就不必编写额外的代码,而Laravel代码本身也不会使用这个mutator。

public function setPlainPassword($value) {
     $this->attributes['password'] = bcrypt($value);
}