【问题标题】:How can Passportjs return authenticate result instead of redirecting to another pagePassportjs如何返回身份验证结果而不是重定向到另一个页面
【发布时间】:2014-02-21 05:59:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript node.js express passport.js


    【解决方案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);
    });
    

    【讨论】:

    • 酷。这正是我想要的。
    • 这是一个由passport定义的方法和一个附加到req对象的引用。它将用户序列化以存储在会话中,然后可以在所有后续请求中进行反序列化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2021-09-11
    • 2019-11-04
    • 1970-01-01
    • 2018-03-15
    • 2014-09-03
    相关资源
    最近更新 更多