2013-08-20 11 views
0

Я создаю API для существующей базы данных. Сначала я заметил проблему, когда увидел, что Auth :: попытка всегда возвращает false. Поскольку я реализовал собственный поставщик хеширования SHA1, я подумал, что это может быть проблемой.Почему Laravel Auth :: check всегда возвращает false?

Но я попробовал Hash :: make ('test'), и он дал мне 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'. Затем я попробовал Hash :: make ($ client-> pwd), и он дал мне тот же хеш. До сих пор. Наконец, я сделал

if (Hash::check('test', $cli->pwd)) 
{ 
    [...] 
} 

и он вернул false. По внешнему виду проблема заключается не в моем хеширующем провайдере, и я думаю, что это также почему Auth :: попытка не работает. Может ли кто-нибудь сказать мне, почему?

+4

Auth :: попытка() будет хешировать сам пароль, так что, вероятно, он перехватил ваш «хэшированный» пароль. – Laurence

+0

Вы интегрировали пользовательский поставщик хэширования в Auth? Потому что этот хеш не выглядит как хэширование BCrypt. –

+0

Упс, ошибка с моей стороны. Я изменил его на if (Hash :: check ('test', $ cli-> pwd)). Все еще возвращающ ложь. И да, я думаю, что я правильно понял интеграцию, это SHA1, потому что мои пароли базы данных не являются хэшами bcrypt. –

ответ

0

Проблема была на моем конце. Я неправильно понял понятие «Красноречивый». Мне пришлось изменить в моем классе UserInterface, к которому была привязана моя модель пользователя, getAuthIdentifier(), чтобы вернуть «id», который является PrimaryKey моей таблицы. Я хотя getAuthIdentifier() был «именем пользователя» таблицы.

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