网站首页 PHP Laravel框架中重置密码时的原密码比对
在输入框输入原密码和新密码后提交到控制器的方法时,要进行原密码的比对
laravel框架中使用的加密函数是bcrypt,这个函数不能像md5一样将输入的原密码md5后直接和数据库里的密码进行比对,这个函数就算你用输入的原密码bcrypt后和数据库里的密码怎么比都不会是一样的。
框架内自带的一个Hash可以解决这个问题,在这里我们使用Hash::check(输入框接收的密码,数据库里的密码或者用Auth获取当前登录用户的密码),它会返回一个布尔值,如果为真就是比对成功!反之则不一致!
方法一:
if(!Hash::check ($request->input('oldpassword'),Auth()->user ()->password)){ session()->flash('danger','原密码不正确'); return redirect ()->back(); } $user=\Auth::user (); $user->password=bcrypt($request->input('password')); $user->save(); session()->flash('success','密码修改成功!'); return redirect ('/admin');
方法二:
public function update(Request $request) { $this->validate($request, [ 'old_password' => 'required', 'password' => 'required|confirmed|min:6' ], [ 'old_password.required' => '请输入旧密码!', 'password.required' => '请输入新密码!', 'password.confirmed' => '请确认新密码!', 'password.min' => '密码长度最小6位!!', ]); if (Hash::check($request->old_password , Auth::user()->getAuthPassword())) { $this->resetPassword(Auth::user(), $request->password); return $this->success('密码修改成功', route('mis.index')); } else { return $this->failure('旧密码错误!,请重新输入'); } }
转载请注明出处!