使用 Laravel Backpacker 保存之前哈希密码
Hash password before saving with Laravel Backpacker
一个简单的问题:如何在使用 Laravel Backpacker CRUD 管理员保存之前修改(散列)请求值?
据我了解,应该在 crud 控制器中执行这些方法之前的某处完成:
public function store(StoreRequest $request)
{
return parent::storeCrud();
}
public function update(UpdateRequest $request)
{
return parent::updateCrud();
}
但我不知道如何正确操作。
编辑:请求不是 Request
对象,而是 StoreRequest
或 UpdateRequest
,看起来像这样:
修正:
public function update(UpdateRequest $request)
{
// Hash password before save
if (!empty($request->password)) {
$request->offsetSet('password', Hash::make($request->password));
}
return parent::updateCrud($request); // <-- Pass the modified request, otherwise the CRUD reads it again from post data
}
如果您询问如何修改 $request
变量中的数据,您可以这样做:
$request->property = 'New value';
此外,您可以将数据添加到 reuqest 本身(而不是变量):
request()->request->add(['key' => 'value']);
您可以使用 offsetSet 方法更新 $request 值
$request->offsetSet('name', $newName);
编辑: 要更新用户密码,您可以这样做:
public function update_password(Request $request)
{
$user = User::find(Auth::user()->id);
if (Hash::check($request->old_password, $user->password)) {
$user->fill([
'password' => Hash::make($request->password)
])->update();
return redirect()->back()->with('message' => 'Your password has been updated.');
}
else {
return redirect()->back()->with('message' => 'The password entered do not match our records.');
}
}
我没有检查代码,但它应该可以工作。现在根据您的需要更新它。
一个简单的问题:如何在使用 Laravel Backpacker CRUD 管理员保存之前修改(散列)请求值?
据我了解,应该在 crud 控制器中执行这些方法之前的某处完成:
public function store(StoreRequest $request)
{
return parent::storeCrud();
}
public function update(UpdateRequest $request)
{
return parent::updateCrud();
}
但我不知道如何正确操作。
编辑:请求不是 Request
对象,而是 StoreRequest
或 UpdateRequest
,看起来像这样:
修正:
public function update(UpdateRequest $request)
{
// Hash password before save
if (!empty($request->password)) {
$request->offsetSet('password', Hash::make($request->password));
}
return parent::updateCrud($request); // <-- Pass the modified request, otherwise the CRUD reads it again from post data
}
如果您询问如何修改 $request
变量中的数据,您可以这样做:
$request->property = 'New value';
此外,您可以将数据添加到 reuqest 本身(而不是变量):
request()->request->add(['key' => 'value']);
您可以使用 offsetSet 方法更新 $request 值
$request->offsetSet('name', $newName);
编辑: 要更新用户密码,您可以这样做:
public function update_password(Request $request)
{
$user = User::find(Auth::user()->id);
if (Hash::check($request->old_password, $user->password)) {
$user->fill([
'password' => Hash::make($request->password)
])->update();
return redirect()->back()->with('message' => 'Your password has been updated.');
}
else {
return redirect()->back()->with('message' => 'The password entered do not match our records.');
}
}
我没有检查代码,但它应该可以工作。现在根据您的需要更新它。