Невозможно войти с базовой аутентификацией в Laravel 5

Я пытался заставить аутентификацию работать для API, который я делаю в Laravel 5. Я добавил базовую аутентификацию, расширив AuthenticateWithBasicAuth, Когда я захожу на страницу в браузере, я получаю приглашение войти в систему. Но когда я ввожу учетные данные, это не позволяет мне войти. Вот что у меня есть в моем общем журнале mysql из запроса:

4 Connect   root@localhost on zgrid
4 Query use `zgrid`
4 Prepare   set names 'utf8' collate 'utf8_unicode_ci'
4 Execute   set names 'utf8' collate 'utf8_unicode_ci'
4 Close stmt
4 Prepare   select * from `accounts` where `sid` = ? limit 1
4 Execute   select * from `accounts` where `sid` = 'a' limit 1
4 Close stmt
4 Quit 

Таким образом, он только выбирает учетную запись, но и не пытается получить пароль. Теперь это может быть скрыто некоторой магией лары, но мои учетные данные, которые я ввожу, являются правильными (скопировано прямо из CLI mysql). Кроме того, он даже не пытается ничего сделать с паролем. В противном случае я бы увидел это в моем журнале выше. Что я должен смотреть дальше? Каковы мои следующие шаги? У кого-нибудь есть предложения? Я что-то пропустил?

1 ответ

Решение

Система аутентификации Laravel предполагает, что вы сохранили свои хэшированные пароли. Когда вы пытаетесь аутентифицировать пользователя с определенным паролем, он сначала хэширует его и сравнивает с тем, что хранится в базе данных. Копирование из консоли mysql и передача его вызову метода аутентификации приведет к повторному хешированию пароля, поэтому они не будут одинаковыми. Если вы сохранили свой пароль в базе данных без хеширования, вызов аутентификации все равно будет неудачным. Так что либо сохраняйте свои пароли после вызова Hash::make('passwordValue'), либо, если вы хотите, чтобы простой пароль сохранялся, используйте простую проверку подлинности сравнения (хотя и небезопасно)

Другие вопросы по тегам