Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 翡翠中的闪光信息_Node.js_Express_Pug_Passport.js - Fatal编程技术网

Node.js 翡翠中的闪光信息

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 但是没有成功。知道我做错了

下面这个例子:除了Flash消息部分,其他一切都正常工作

我已经将视图引擎改为Jade而不是EJS,但我似乎无法显示flash消息

ejs视图中提供的代码是:

<% 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