2017-02-10 4 views
1

Я пытаюсь проверить подлинность использования на входе в систему с помощью этогоАутентифицировать пользователя при входе в систему - Laravel

//Attempt to auth the user 
     if(! auth()->attempt(request(['email','password' => Hash::make(request('password'))])))        
     { 

      //If not redirect back 
      return back()->withErrors([ 

       'message' => 'Please check your email or password' 
      ]); 
     } 

Но я получаю эту ошибку ..

QueryException в connection.php линии 647: SQLSTATE [42S22]: Column не найдено: 1054 Неизвестный столбец '$ 2y $ 10 $ 5ysCvqUiloxmtRo2comd9uaiaNkLJ0eiW6x5pDFGWESAbXr5jm5N6' в 'где предложение' (SQL: SELECT * FROM users где email является нулевым и $2y$10$5ysCvqUiloxmtRo2comd9uaiaNkLJ0eiW6x5pDFGWESAbXr5jm5N6 является нулевым пределом 1)

Может ли кто-нибудь помочь мне в этом. Спасибо :)

ответ

2

Эта ошибка возникает из-за неправильного использования вспомогательного метода request().

Если вы, как вы сделали:

request(['email','password' => Hash::make(request('password'))]) 

Он будет производить этот массив:

['email' => '[email protected]', 's9audh87h2ueahjdbas' => null] 

Метод request() ожидает массив со своими значениями, представляющего имя материалов, представленных в запросе , Поэтому, если вы дадите ему ассоциативный массив, он полностью игнорирует ключи, и он будет только захватывать свои значения.

Таким образом, чтобы получить входные данные из запроса и использовать его в попытке авторизации, вы должны сделать так:

$userInput = request('email', 'password'); 
if (! auth()->attempt($userInput)) 
{ 
    //do something. 
} 

Это справедливо при условии, что ваш user таблица имеет email и password столбцов.

+1

Большое спасибо. Это работает сейчас :) – Martina

0

Попробуйте это:

//Attempt to auth the user 
if(! auth()->attempt([ 
     'email' => request()->get('email'), 
     'password' => request()->get('password') 
    ])        
{ 

    //If not redirect back 
    return back()->withErrors([ 

     'message' => 'Please check your email or password' 
    ]); 
} 

а) Вам не нужно хэш пароля, Laravel делает это уже

б) Я не уверен, что вы проходили как параметры. Некоторый тип смешанной матрицы

+0

Это не работает. Теперь он просто дает мне ошибку «Пожалуйста, проверьте свой адрес электронной почты или пароль», даже если они верны. Пароль создается с помощью bcrypt. – Martina

+0

Как вы сохраняете пароли? Laravel также использует bcrypt, поэтому это не должно быть проблемой. Дикая догадка гласит, что вы можете дважды использовать пароль при его сохранении. – devk

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