簡體   English   中英

Passport.js成功認證完全不調用

[英]Passport.js successful authentication not calling at all

這是我的代碼:

passport.use(new localStrategy(
    function(username, password, done) {
        User.findOne({
            username: username
        }, function(err, user) {
            if (err) throw err;
            if (!user) {
                console.log("Unknown User");
                return done(null, false, {
                    message: "Unknown User"
                })
            }
            if (!user.validPassword(password)) {
                console.log("Incorrect password.", password);
                return done(null, false, {
                    message: 'Incorrect password.'
                });
            }

            console.log("User Is detected");
            return done(null, user, {
                message: "User Is detected"

            })

        });
    }
));


router.post('/login',
    passport.authenticate('local', {
        successRedirect: '/',
        failureRedirect: '/users/login',
        failureFlash: true,
        successFlash: 'Welcome!'
    }),
    function(req, res) { // this function not called
        console.log(req)
    });

一切正常,但成功函數未調用,我希望登錄后顯示以下消息: "welcome"+req.body.username

有什么建議嗎? 謝謝

passport.authenticate()文檔中

重定向選項將覆蓋默認行為

在您的示例中,因為您設置了successRedirect選項,所以成功認證后將不會調用中間件鏈中的下一個函數。

如果要在重定向到'/'之前調用函數,則應該:

router.post('/login',
    passport.authenticate('local', {
        failureRedirect: '/users/login',
        failureFlash: true
    }),
    function(req, res) {
        // This should show up in your logs:
        console.log('Welcome ' + req.body.username);

        // You can also use a flash to consume after redirect:
        // (provided that you use connect-flash in your app)
        req.flash('info', 'Welcome ' + req.body.username);

        res.redirect('/');
    }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM