3

Express 4 で Passport.js を使用しているときに、フラッシュ メッセージの表示に問題があります。Passport.js のローカル戦略のドキュメントには、フラッシュ メッセージの設定方法が示されていますが、実際の表示方法についてはあまり説明されていません。

これが私がやっている方法です。

passport.use(new auth(function (username, password, done) {
    con.query(query.login, [username], function(err, rows) {
        if (err) {
            done(err);
        }
        if (rows.length != 1) {
            console.log('Login attempted for ' + username);
            return done(null, false, {message: "Wrong username/password"});
        }
        user = rows[0];
        bcrypt.compare(password, user.passwordHash, function (err, correct) {
            delete user.passwordHash;
            if (correct) {
                return done(null, user);
            } else {
                console.log('Login attempted for ' + username);
                return done(null, false, {message: "Wrong username/password"});
            }
        })
    });
}));

app.get('/login', function(req, res) {
    var pageParameters = {};
    var flash = req.flash('message');
    // console.log(flash);
    if (flash != null && flash != '') {
        pageParameters.message = flash;
    }
    res.render('login', pageParameters);
});

app.post('/login', passport.authenticate('local', {
    failureRedirect: '/login',
    failureFlash: true
}), function (req, res) {
    req.session.user = req.user;
    if (typeof req.session.redirect !== 'undefined') {
        res.redirect(req.session.redirect);
        delete req.session.redirect;
    } else {
        res.redirect('/');
    }
});

flashエラーはありません。コンソールは、未定義であることについて何も教えてくれません。console.log(flash)何も示しません。をどのように表示しflashますか?

4

2 に答える 2