Passport.js Ajax login?



是否可以使用passport.js通过ajax登录?

问题是,我正在通过ajax创建一个用户,我希望它能自动登录(所有使用json的东西都是restful风格的),但req.login()做了一些我不知道的事情,它显然会发送自己的状态、头,甚至重定向到主页,但我需要的是创建自己的json响应。

我创建用户的代码:

signup_facebook:function(req,res){

    var restponse = new Restponse();
    var body = req.body;
    var obj = {
        display_name: body.first_name,
        name: body.first_name,
        surname: body.last_name,
        photos: ['http://graph.facebook.com/'+ body.id+ '/picture?type=normal'],
        gender: body.gender,
        facebook: {
            userID: body.id,
            displayName: body.display_name
        }
    }
    User.facebookSignUp(obj, function(user){
        if(user !== false){
            user = obj;
            restponse.location = '/';
            restponse.status = HTTPStatus.REST.C201_OK;
        }else{
            restponse.location = '/';
            restponse.status = HTTPStatus.REST.C302_FOUND;
        }
        restponse.body = user;
        req.login(user, {}, function(err) {
            APIheart.respondJson(res, restponse);
        });
    })

谢谢你抽出时间!

我在这篇文章中找到了答案:

http://toon.io/on-passportjs-specific-use-cases/

// Manually establish the session...
req.login(user, function(err) {
    if (err) return next(err);
    return res.json({
        message: 'user authenticated',
    });
});

最新更新