1. 程式人生 > >laravel 5.6框架中重置密碼時的原密碼比對

laravel 5.6框架中重置密碼時的原密碼比對

在登入後臺後修改自己的密碼,如下圖介面


在輸入框輸入原密碼和新密碼後提交到控制器的方法時,要進行原密碼的比對

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');