【问题标题】:Unable to show flash message from Passport.js无法显示来自 Passport.js 的 Flash 消息
【发布时间】:2016-04-15 00:05:37
【问题描述】:

如果身份验证失败,我在发送 Flash 时遇到问题。除了一切正常。当我将示例 (https://github.com/jaredhanson/connect-flash) 复制到我的应用程序时,Flash 消息工作正常...

这是我的代码:

//routes
app.get('/login', function (req,res){
    res.render('login', {
        authMessage: req.flash('authMessage')
    });
});

app.post('/login', passport.authenticate('local', {
    failureRedirect: '/login',
    failureFlash: true
    }), function(req,res){
    res.send('ok');
});

//local strategy
passport.use(new LocalStrategy(
    function(username, password, authCheckDone) {
        UserDetails.findOne({username : username}).then(
            function(user){
                if (!user) {
                    console.log('bad username');
                    return authCheckDone(null, false, {authMessage: 'Wrong name'});
                }
                if (user.password !== password) {
                    console.log('bad password');
                    return authCheckDone(null, false, {authMessage: 'Wrong password'});
                }
                return authCheckDone(null, user);
            }),
            function(error){
                return authCheckDone(error);
        };
    }
));

//ejs
<% if (authMessage.length > 0) { %>
    <p>test</p>
    <%= authMessage %>
<% } %>

我在某处读过这个问题可能与安全性有关,而不是使用 https,但如果是这种情况,来自 github 的示例也不起作用......

【问题讨论】:

    标签: node.js express passport.js ejs connect-flash


    【解决方案1】:

    如果我没记错的话,您传递给LocalStrategy 的回调应该将请求对象作为第一个参数。所以你的函数看起来像这样:

    function(req, username, password, authCheckDone) {
        // your code
    

    之后,根据我的一个例子,你应该通过以下方式返回authCheckDone的结果:

    return authCheckDone(null, false, req.flash('authMessage', "your message"));
    

    但请确保您通过以下方式创建 LocalStrategy 对象:

    new LocalStrategy({
        passReqToCallback: true // don't forget this
    }, function(req, username, password, authCheckDone) {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多