У меня есть новый проект Sails.js с использованием Passport.js для аутентификации пользователей. У меня есть базовая проверка подлинности (что означает, что пользователь может зарегистрироваться и успешно войти в систему), но хотел бы отобразить соответствующее сообщение об ошибке в окне входа в систему, если они не вводят правильные учетные данные. Я не могу понять, как печатать сообщения об ошибках в представлении.
Здесь моя настройка. У меня есть config/passport.js
, который содержит следующее:
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
bcrypt = require('bcrypt');
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findOne({ id: id } , function (err, user) {
done(err, user);
});
});
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback : true
},
function(req, email, password, done) {
User.findOne({ email: email }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Please enter a valid email address.' });
}
if (!req.body.username) {
return done(null, false, { message: 'Please enter your username.' });
}
bcrypt.compare(password, user.password, function (err, res) {
if (!res) {
return done(null, false, {
message: 'Invalid Password'
});
}
var returnUser = {
username: user.username,
email: user.email,
createdAt: user.createdAt,
id: user.id
};
return done(null, returnUser, {
message: 'Logged In Successfully'
});
});
});
}
));
Тогда у меня есть api/controllers/AuthController.js
, который содержит следующее:
var passport = require('passport');
module.exports = {
_config: {
actions: false,
shortcuts: false,
rest: false
},
login: passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login',
failureFlash: true
}),
logout: function(req, res) {
req.logout();
res.redirect('/login');
}
};
Опять же, это работает правильно, если пользователь заполняет свои правильные учетные данные. Я использую Handlebars в качестве моего механизма шаблонов и хотел бы отобразить сообщение об ошибке в окне входа в систему так:
<div class="alert">{{ message }}</div>
До сих пор я пробовал {{ failureMessage }}
{{ message }}
{{ req.flash.failureMessage }}
{{ req.flash.err }}
{{ req.flash.message }}
безрезультатно. Итак, все это, чтобы сказать, как мне отобразить соответствующее сообщение об ошибке на мой взгляд? И еще лучше, как бы я выделил странное поле в моем представлении?