遵循此示例:http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local,除Flash消息部分外,一切正常。
我已将视图引擎更改为Jade而不是EJS,但我似乎无法显示flash消息。
ejs视图中提供的代码是:
<% if (message.length > 0) { %>
<div class="alert alert-danger"><%= message %></div>
<% } %>
我想我可以为Jade做这件事:
if #{message}
p message
甚至:
if message
p message
但没有成功。知道我做错了吗?
注意我已根据教程
包含了所有必需的库答案 0 :(得分:8)
以下是我在玉器中使用闪光灯的方法......
-if(messages)
div#note #{messages}
并使用它来渲染您的视图,将消息var传递给您的视图
req.flash('info', "Credenciales invalidas, intente nuevamente");
res.render('index', {messages: req.flash('info')});
这对我有用
答案 1 :(得分:1)
我继续使用像这样的自定义回调:
app.post('/login', function(req, res, next) {
passport.authenticate('local-login', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.render('login', {message: req.flash('loginMessage')}); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
答案 2 :(得分:0)
这对我有用(由@Xianlin评论)。路线:
app.get('/login', function(req, res) {
res.render('login', { message: req.flash('loginMessage') });
});
app.post('/login', urlencodedParser, passport.authenticate('local-login', {
successRedirect : '/profile',
failureRedirect : '/login',
failureFlash : true
}));
使用Passport返回所需的错误消息:
return done(null, false, req.flash('loginMessage', 'That email address does not exist'));
最后在Jade:
if (message.length > 0)
#alert
p= message
希望这有帮助!