如何解决如何使用Laravel 5.8将哈希密码存储到数据库
我需要将密码以散列方式存储到数据库中,我能够拥有密码,但是当我提交表单时,密码存储为未散列,
这是我的控制器存储功能
evalBd (Add a b) = evalBd a >>= \b' _____ -> _____ _____ >>= \b' -> return (a' + b' )
这是我的验证功能
public function store(Request $request)
{
$hash = ['password' => Hash::make($request)];
//dd($hash);
// HASHED PASSWORD WAS DISPLAYED HERE
$user = User::create($this->validateRequest());
dd('User Created');
}
我试图在“存储功能”中执行此操作(但没有成功!)
private function validateRequest()
{
return request()->validate([
'name' => ['required','string','max:255'],'email' => ['required','email','max:255','unique:users'],'password' => ['required','min:8','confirmed'],'phone' => 'required',]);
}
是否可以通过这种方式将哈希密码存储到数据库中?
否则我需要坚持这种方式;(?
public function store(Request $request)
{
$hash = ['password' => Hash::make($request)];
$user = User::create($this->validateRequest($hash));
dd('User Created');
}
我只是希望我的控制器只需几行代码就可以清理干净。
有人可以帮我吗?
谢谢
解决方法
您正在更改request
的值后验证password
,因此无法验证密码确认,并返回验证错误。
首先验证request
,然后将password
值替换为散列的值。
public function store(Request $request)
{
$request->validate([
'name' => ['required','string','max:255'],'email' => ['required','email','max:255','unique:users'],'password' => ['required','min:8','confirmed'],'phone' => 'required',]);
$request->merge(['password' => Hash::make($request->input('password'))]);
$user = User::create($request->all());
dd($user);
}
,
在您的User
模型中使用更改器,因此每次设置密码时,密码都会被散列。
public function setPasswordAttribute($password)
{
$this->attributes['password'] = Hash::make($password);
}
这样,您的store
方法将如下所示:
public function store(Request $request)
{
$user = User::create($this->validateRequest());
dd('User Created');
}
这超出了此问题的范围,但仅是另一条建议:您应该使用表单请求类(https://laravel.com/docs/8.x/validation#creating-form-requests),以减少控制器中的代码量(其他优点)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。