Passport身份验证无法在Heroku上运行?

时间:2013-06-27 19:02:34

标签: javascript heroku express mlab redistogo

我的应用程序是使用express的nodejs web应用程序。它是一个有cms和api的投资组合网站。

在我的登录路线中,我有以下代码:

passport.authenticate('local', function(err, user, info){
    if(err){
        return next(err);
    } else if(!user){
        res.format({
            json: function(){
                return error.throw403(req, res, next);
            },
            html: function(){
                return res.redirect('/login');
            }
        });
    } else {
        console.log('login route, user');
        console.log(user);
        req.logIn(user, function(err){
            if(err){
                return next(err);
            } else {
                res.format({
                    json: function(){
                        return res.send(user);
                    },
                    html: function(){
                        return res.redirect('/cms/users');
                    }
                });
            }
        });
    }
})(req, res, next);

我的heroku日志告诉我用户已定义且正确。 req.logIn()触发,成功并重定向(应该)到/cms/users。但是,我在/cms/users获得403,因为req.user不在请求中。这让我觉得我的会议不会持久,但我不是专家,也不知道下一步该做什么。

我正在使用redistogo和mongolab,并且两个配置都是使用CLI设置的。有什么建议?我被卡住了!感谢。

编辑:我应该补充一点,在我的本地机器上一切正常。

1 个答案:

答案 0 :(得分:1)

文档是我应该开始的地方。

https://devcenter.heroku.com/articles/redistogo#using-with-node-js

我按照该网站上的每个配置跟随该字母,然后调整应用配置顺序,直到它工作。