Heroku上的护照身份验证不起作用

Passport authentication not working on Heroku?

本文关键字:身份验证 不起作用 Heroku      更新时间:2023-09-26

我的应用程序是一个使用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。但是,由于req.user不在请求中,所以我在/cms/users处得到403。这让我觉得我的课程没有坚持下去,但我不是专家,也不知道下一步该怎么办。

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

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

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

https://devcenter.heroku.com/articles/redistogo#using-带有节点js

我严格遵循了该网站上的每一个配置,然后调整了应用程序的配置顺序,直到它起作用。