2017-01-31 10 views
1

Я набор полей:Feathersjs проверка местной аутентификации пароль не работает

local: { usernameField: 'username', passwordField: 'sha_pass_hash' } 

и модель, как это должно быть. Всякий раз, когда я пытаюсь отправить свою полезную нагрузку на сервер, я получаю только Ошибка: (401) Маршрут:/auth/local - Неверный логин.

Теперь мой вопрос заключается в том, как работает проверка пароля, так как я, без всяких сомнений, могу заставить эту работу работать.

Пароль хранится как sha1 внутри базы данных, и я отправил пароль sha1 как часть полезной нагрузки.

Почему это не сравнивается с ними напрямую, что именно происходит? Я просто смущен.

ответ

2

Сравнение хэша по умолчанию ожидает bcrypt хешированная (+ соленая) строка (созданная крюком hashPassword).

Если вы хотите использовать простые хэшированные пароли SHA1, вы можете использовать auth 1.0 и реализовать custom verifier.

+0

Так что теперь модуль аутентификации перьев, который я только что создал вчера, является версией: 0.7.11. Мне нужно обновить файл package.js вручную, чтобы использовать auth 1.0 или он что-то тормозит? – nevotheless

+0

Нет, вы должны использовать крюк 'hashPassword' до' create', однако в противном случае вы будете хранить недопустимый пароль в базе данных. – Daff

+0

@Daff: Btw, Как я могу объявить passwordField в json-файле конфигурации, чтобы feathersjs знали, какое поле сравнивать. Мой пароль хранится в 'User.services.password.bcrypt'. – thelonglqd