Node.js 翡翠中的闪光信息
下面这个例子:除了Flash消息部分,其他一切都正常工作 我已经将视图引擎改为Jade而不是EJS,但我似乎无法显示flash消息 ejs视图中提供的代码是:Node.js 翡翠中的闪光信息,node.js,express,pug,passport.js,Node.js,Express,Pug,Passport.js,下面这个例子:除了Flash消息部分,其他一切都正常工作 我已经将视图引擎改为Jade而不是EJS,但我似乎无法显示flash消息 ejs视图中提供的代码是: <% if (message.length > 0) { %> <div class="alert alert-danger"><%= message %></div> <% } %> 甚至: if message p message 但是没有成功。知道我做错了
<% if (message.length > 0) { %>
<div class="alert alert-danger"><%= message %></div>
<% } %>
甚至:
if message
p message
但是没有成功。知道我做错了什么吗
注意根据教程,我已经包括了所有必要的库以下是我如何在Jade中使用Flash的
-if(messages)
div#note #{messages}
并使用它呈现视图,将消息var传递给视图
req.flash('info', "Credenciales invalidas, intente nuevamente");
res.render('index', {messages: req.flash('info')});
这对我来说很有效我继续使用自定义回调,如下所示:
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);
});
这对我很有用(正如@xinlin所评论的)。路线:
使用Passport返回所需的错误消息:
return done(null, false, req.flash('loginMessage', 'That email address does not exist'));
最后在《翡翠》中:
if (message.length > 0)
#alert
p= message
希望这有帮助 flash消息是在Passportjs策略中设置的,然后我使用FailureRedirect-flash消息仍然可用吗?它不起作用-那么如何使用FailureRedirect呈现登录页面-我需要使用自定义回调吗?我不是passport方面的专家,但我想使用自定义回调就可以了it@tommyd456,我尝试了上面的jade代码,即使失败重定向到“登录”页面,它也能工作。您需要放置
res.render('login',{message:req.flash('loginMessage')})
到你的路径app.get('/login')
并使用-if(messages.length)
。
return done(null, false, req.flash('loginMessage', 'That email address does not exist'));
if (message.length > 0)
#alert
p= message