laravel 5.6框架中重置密碼時的原密碼比對
阿新 • • 發佈:2019-02-10
在登入後臺後修改自己的密碼,如下圖介面
在輸入框輸入原密碼和新密碼後提交到控制器的方法時,要進行原密碼的比對
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');