网站首页 PHP Laravel框架中重置密码时的原密码比对
Laravel框架中重置密码时的原密码比对
编辑时间:2019-04-09 15:35:06 作者:admin 浏览量:4011

在输入框输入原密码和新密码后提交到控制器的方法时,要进行原密码的比对


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('旧密码错误!,请重新输入');
    }

}



    上一篇:npm 配置项registry修改为淘宝镜像
    下一篇:创建scrapy工程时报错 "ImportError: DLL load failed: 找不到指定的程序。"
    出自:Robin

    地址:www.xmaniu.com

    转载请注明出处!