簡體   English   中英

Laravel 5.1更改密碼功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM