在登录后台后修改自己的密码,如下图界面
在输入框输入原密码和新密码后提交到控制器的方法时,要进行原密码的比对
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');