Passportjs如何返回验证结果而不是重定向到另一个页面

时间:2014-02-21 05:59:15

标签: javascript node.js express passport.js

我使用passportjs进行用户身份验证。在官方指南中,唯一显示的用户案例是身份验证后的重定向操作:

app.post('/login',
  passport.authenticate('local', { successRedirect: '/',
                                   failureRedirect: '/login',
                                   failureFlash: true })
);

但是,在我的申请中,我不希望护照立即重定向。相反,我希望护照可以发回一些json对象,表明身份验证是否成功。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以发送自定义回复 -

app.post('/login', function(req, res, next) {
    passport.authenticate('local', function(err, user, info) {
        if (err) {
            return next(err);
        }

        if (!user) {
            return res.send(400, 'Incorrect username');
        }

        req.logIn(user, function(err) {
            if (err) {
                return next(err);
            }

            res.send({'message': 'User authenticated'});
        });
    })(req, res, next);
});