gpt4 book ai didi

php - 更新用户时对 Laravel 空密码进行哈希处理

转载 作者:可可西里 更新时间:2023-11-01 00:32:04 25 4
gpt4 key购买 nike

当我更新我的模型绑定(bind)表单时

$user->update(Input::all())

我的密码字段被重新哈希处理,即使它是空的。我已将我的 User.php 类设置为自动散列该字段,但不应跳过它,因为该字段为空吗?

最佳答案

在这种情况下你可以使用:

Input::except('password')

所以在你的 Controller 中你可以这样做:

if (trim(Input::get('password')) == '') {
$data = Input::except('password');
}
else {
$data = Input::all();
}
$user->update($data);

但是您应该考虑其他可能的问题。在这种情况下,如果用户发送带有 id 名称的输入(即使您的表单中没有这样的字段,任何人都可以这样做)他可以轻松更改其他用户的密码/帐户并销毁您的整个数据.

你至少应该在你的 User 模型中使用:

protected $guarded = array('id');

保护用户 ID 在 mass assignment 期间不被更改但也许还有其他一些您想要保护的字段(您应该将它们列在 $guarded 数组中。

在这种情况下,对我来说更好的选择是使用标准用户更新:

$user = User::find($id);

if (trim(Input::get('password')) != '') {
$user->password = Hash::make(trim(Input::get('password')));
}
$user->name = Input::get('name');
// and so on - this way you know what you are changing and you won't change something you don't want to change
$user->save();

关于php - 更新用户时对 Laravel 空密码进行哈希处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com