Невозможно войти с базовой аутентификацией в 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'), либо, если вы хотите, чтобы простой пароль сохранялся, используйте простую проверку подлинности сравнения (хотя и небезопасно)