Коллеги, у меня возникла проблема с Passport.js следующего плана.
У меня есть локальная стратегия аутентификации, которая должна выполнять авторизацию пользователей в системе. Ее код ниже.
passport.use 'local-login', new LocalStrategy
usernameField: 'email'
passwordField: 'password'
passReqToCallback: true
,
(req, email, password, done) ->
# find a user whose email is the same as the forms email
# we are checking to see if the user trying to login already exists
User.findOne { 'email' : email }, (err, user) ->
# if there are any errors, return the error before anything else
return done err if err?
# if no user is found, return the message
return done null, false, req.flash('loginMessage', 'Пользователь не найден.') unless user?
# if the user is found but the password is wrong
if not user.validPassword(password)
return done null, false, req.flash('loginMessage', 'Пользователь с таким email и паролем не обнаружен.')
# all is well, return successful user
done null, user
С виду, никакого криминала в ней нет. Везде вызывается callback
done. Везде в первом значении стоит
null.
Есть файл с маршрутами. И в нем указан следующий код для данной стратегии авторизации.
router.post '/login.html', passport.authenticate('local-login'), controller.loginCreate
По идее, в начале отрабатывает функция
passport.authenticate('local-login'), а потом, должна вызываться следующая в цепочке функция
controller.loginCreate. Но этого не происходит если я возвращаю функцию
done в следующем виде:
done null, false, req.flash('loginMessage', 'Пользователь с таким email и паролем не обнаружен.')
Если вызывается в виде:
done null, user
, то все нормально.
По какой причине могут возникнуть такого рода ошибки? Ведь, если судить
по документации, то все должно работать...
Может быть есть какие-нибудь идеи?
Буду признателен за любую помощь в решении данной проблемы.