[英]Laravel 5.1 change password functionality
我需要為我的laravel應用程序更改密碼功能。 我創建了這個視圖:
{!! Form::password('old_password', ['class'=>'form-control']) !!}
{!! Form::password('password', ['class'=>'form-control']) !!}
{!! Form::password('password_confirmation', ['class'=>'form-control']) !!}
然后在我的控制器中,我正在檢查為old_password
輸入的值是否與用戶的當前密碼相同。
if(bcrypt($request->old_password) !=$user->password) return redirect()->back()
問題是上述情況總是如此。 即使用戶輸入有效密碼,這個條件也會返回真實狀態! 為什么會這樣? 順便說一句,我在我的用戶模型中哈希密碼:
public function setPasswordAttribute($password){
$this->attributes['password'] = bcrypt($password);
}
bcrypt()
每次都會生成一個隨機鹽。 為了檢查密碼,我應該使用Hash :: check()。
文檔中的示例:
if (Hash::check('plain-text-password', $hashedPassword)) {
// The passwords match...
}
有一個名為Auth::validate($credentials)
的有用身份驗證功能,您可以在其中傳遞[username, password]
或[email, password]
組合。 這將檢查提供的$credentials
是否有效而不記錄用戶。
所以在你的AuthController
你會檢查:
...
$credentials = [
'email' => $request->get('email'),
'password' => $request->get('old_password'),
];
if(\Auth::validate($credentials)) {
// TODO: Old password is correct, do your thing
// Change password and login, OR
// Send them to the login page
}
return redirect()->back()->withError('Incorrect old password');
希望這可以幫助。
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.