как я могу проверить, является ли введенный пароль текущим паролем?

#laravel

#laravel

Вопрос:

Чтобы изменить пароль, я ввожу текущий пароль.Для правильного пароля также будет отображаться сообщение об ошибке

общедоступная функция passwordupdate (запрос $request){

     $user=user::find(Auth::user()->id);

    $validator=Validator::make($request->all(), [
        //'password' => 'required|confirmed|min:6|max:14' 
        'cpassword'=> 'required|confirmed|min:6|max:14'                     
    ]);
    if($validator->fails()){
        return redirect()->back()->withErrors(['cpassword'=>'Please check the password you given']);
    }else{
        $user->cpassword=bcrypt($request->cpassword);
         $user->save();
        return redirect()->back();
    }

}
  

Комментарии:

1. Эй, пожалуйста, отметьте ответ как правильный, если он есть

Ответ №1:

Проверка хэша https://laravel.com/docs/5.3/hashing

 if (Hash::check('plain_text_password', $hashedPassword))
{
    // The passwords match...
}
  

Ответ №2:

  1. Сначала вам нужно use IlluminateSupportFacadesHash;

  2. чтобы проверить, был ли старый пароль введен пользователем, вы можете использовать Hash::check() . Эта функция принимает 2 параметра. Первый — это обычная строка, а второй — хэшированный пароль (старый пароль).

Вы можете восстановить старый пароль, Auth::user()->password поэтому, если условие будет

 if(Hash::check($request['oldpass'], $user->password)){
    //insert the new password
    Auth::user->update([
    'password'=>bcrypt($data['newpass'])
    ]);
    Auth::user->save();
}
  

P.S
Hash::check() возвращает true или false

Ответ №3:

Вы можете использовать Hash::check() метод. Например, если вы хотите сравнить введенный пароль с паролем текущего пользователя:

 if (Hash::check($request->password, auth()->user()->password) {
    // Entered password is correct.