"Неверные аргументы", выданные bcrypt-nodejs - Passport
У меня установлена система входа в систему для моего приложения Node.js. Недавно я внес изменения в свою модель пользователя (CoffeeScript):
password: String
в
password:
type: String
select: false
Моя функция для сравнения хэшей паролей с bcrypt выглядит следующим образом:
userSchema.methods.validPassword = (password) ->
bcrypt.compareSync password, @local.password
Теперь, когда я запускаю вышеупомянутую функцию, эта ошибка выдается
Incorrect arguments
У кого-нибудь есть идеи, почему это будет сгенерировано после того, как я добавлю "select: false" в мою модель пользователя?
3 ответа
Выдается, если пароль или @local.password не является строкой. Это случилось со мной, когда я пытался вызвать метод экземпляра для экземпляра, который не включал @local.password в загруженные атрибуты.
userSchema.methods.validPassword = (password) ->
bcrypt.compareSync password, @local.password
Предполагая, что это в классе, вам нужно =>
скорее, чем ->
Для того чтобы @local
работать.
Зарегистрируйте значения как сохраненного, так и входящего пароля. Держу пари, что один из них не определен.
Проверьте, заполняется ли значение для пароля. Если выбрано значение false, пароль не будет восстановлен.