2017-02-04 4 views
0

Я использовал Hash :: check() количество раз для функции обновления пароля. Он работал нормально. Но здесь он всегда возвращает false. Я не понимаю, почему его возвращение ложно. Вот код, который работал для меня.Hash :: check() возвращает false в Laravel

$pass_data = array(
      'current_pass' => $post['old_pass'], 
      'new_pass' => $post['new_pass'], 
      ); 
$pass_data['new_pass'] = bcrypt($pass_data['new_pass']); 

    if (\Hash::check($pass_data['current_pass'],\Auth::user()->password)) 
      { 

      $user = new User(); 
      if($user->where('id',\Auth::user()->id)->update(['password'=>$pass_data['new_pass']])){ 
        return response()->json(['msg'=>'Password Changed']); 
       } 
      } 

      else{ 
       return response()->json(['msg'=>'Wrong Password']); 
      } 

Вот код, который возвращает ложь, Здесь $ mem_id не идентифицированный пользователь (это из-за изменения пропуска NON аутентифицированного пользователя?).

$mem_id = $request['mem_id']; 
    $old_pass = $request['mem_old_pass']; 
    $mem_pass = User::where('id',$mem_id)->pluck('password'); 


    if (\Hash::check($old_pass,$mem_pass)) { 

     $new_pass = bcrypt($request['mem_new_pass']); 

     $update = User::where('id',$mem_id)->update(['name'=>$request['mem_name'],'email'=>$request['mem_email'],'password'=>$new_pass]); 


     if ($update) { 

      $updated_user = User::where('id',$mem_id)->get(); 
      return response()->json(['msg'=>'updated','user'=>$updated_user]); 
     } 
     else{ 

      return response()->json(['msg'=>'update_failed']); 
     } 
    } 

    else{ 
     return response()->json(['msg'=>'pass_fail']); 
    } 

Я получаю ответ 'pass_fail'.

ответ

0

Usage.

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

Вы передаете к Hash::check не простому текстовому паролю, но в результате bcrypt($old_pass);. Вы должны передавать простой текст, а не зашифровать.

+0

Да, он делает шифрование справа. Я говорю о второй части кода, касающейся проверки. –

+0

извините мою ошибку, ваш ответ правильный –

+0

отредактировал вопрос, что один был ошибкой, я передаю простой текст. Тем не менее, я получаю сообщение об ошибке –

0

Вопрос был с pluck(). когда я использовал этот код, он прекрасно работает

$member = User::find($mem_id); 
$mem_pass = $member->password; 

Теперь я передал $ mem_pass к Hash :: проверить, она работала отлично

1

Поскольку метод срывать не возвращает указанное значение столбца.

Смежные вопросы