2017-01-10 9 views
1

Когда регистрируется новый пользователь, он автоматически регистрируется, что работает нормально. Я использую этот пароль следующим образом: '$ newUser-> password = bcrypt ($ request-> get (' password '));', он успешно хэширует пароль, таблица My users имеет столбец паролей, который является varchar 255. И i Кроме того, в таблице users также есть поля remember_token. 'Дд ($ request-> все)()' возвращает:Laravel 5.3 Auth :: попытка() всегда возвращает false

array:3 [ 
    "email" => "[email protected]" 
    "_token" => "QIwnHacApWg3SotAXtoCCMFNK3FYFoFBAv2LSx4c" 
    "password" => "adminadmin" 
] 

И, электронной почты и пароль 100% правильно по отношению к записи пользователей таблицы. просьба является Ajax поэтому у меня есть следующий код JS:

$('.post-btn').click(function(){    
    $.ajax({ 
     url: '/sign-in', 
     type: "post", 
     data: {'email':$('input[name=email]').val(), '_token': $('input[name=_token]').val(),'password': $('input[name=password]').val()}, 
     success: function(data){ 
      console.log(data); 
      window.location = '/'; 
     } 
    });  
}); 

Метод AUTHENTICATE:

имена
public function authenticate(Request $request) { 
    $validator = Validator::make($request->all(), 
     [ 
      'email' => "required", 
      'password' => 'required' 
     ] 
    ); 

    $user = array('email' => $request->get('email'),'password' => $request->get('password')); 
     if (Auth::attempt($user)) { 
      $response = array(
       'status' => 'success', 
       'msg' => 'Successfully Logins.', 
      ); 
      $user = new \App\User; 
      if(Auth::check()) { 

      } 
      return \Response::json($response); 
     } else { 
      $response = array(
       'status' => 'failed', 
       'msg' => 'Invalid Credentials!', 
      ); 
      return \Response::json($response); 
     } 
    } 

поля ввода являются правильными.

Что еще мне не хватает?

+0

почему бы не использовать 'Hash :: make' хэш пароля, который Laravel по умолчанию один. – jycr753

+0

Это не похоже на хеширование, когда вы регистрируете свою учетную запись. Laravel хэширует ваш вход, когда вы пытаетесь войти в систему и сравниваете хэш с тем, что находится в вашей базе данных. Хэш не совпадает с «adminadmin», поэтому он терпит неудачу. –

+0

@ jycr753 Позвольте мне попробовать –

ответ

0

Этой работа для меня:

public function authenticate(Request $request) 
{ 
    $validator = Validator::make($request->all(), 
     [ 
      'email' => "required", 
      'password' => 'required' 

     ] 
    ); 
    $email = $request->input('email'); 
    $password = $request->input('password'); 
    if (Auth::attempt(['email' => $email, 'password' => $password])) { 
     // Authentication passed... 
     return \Response::json([ 
      'status' => 'success', 
      'msg' => 'Successfully Logins.', 
     ]); 
    } 
    else { 
     return \Response::json([ 
      'status' => 'failed', 
      'msg' => 'Invalid Credentials!', 
     ]); 
    } 
} 
0

Надеется, что это поможет вам ..

$user = array('email' => $request->email,'password' => $request->password); 
Смежные вопросы