Session Mongoose Auth/Express/Connect未保留会话问题

Session Mongoose Auth/Express/Connect未保留会话问题,session,node.js,authentication,express,mongoose,Session,Node.js,Authentication,Express,Mongoose,我目前正在开发一个node js应用程序,我正在尝试使用Monggose Auth创建一个用户身份验证过程。我已经完成了多个教程示例和所有关于如何使用Mongoose Auth的指南,但是我遇到了麻烦 我的基本密码验证似乎有效,并重定向到正确的位置,保留用户等。我的问题是,在将我的requires登录功能添加到用户配置文件页面时,我遇到了一个问题,我只是被重定向回登录页面。这似乎是因为会话以某种方式丢失了,但是当我查看everyauth调试输出(mongoose auth构建在everyauth

我目前正在开发一个node js应用程序,我正在尝试使用Monggose Auth创建一个用户身份验证过程。我已经完成了多个教程示例和所有关于如何使用Mongoose Auth的指南,但是我遇到了麻烦

我的基本密码验证似乎有效,并重定向到正确的位置,保留用户等。我的问题是,在将我的requires登录功能添加到用户配置文件页面时,我遇到了一个问题,我只是被重定向回登录页面。这似乎是因为会话以某种方式丢失了,但是当我查看everyauth调试输出(mongoose auth构建在everyauth之上)时,我看到了以下内容

开始步骤-显示登录

…完成步骤

GET/favicon.ico

开始步骤-extractLoginPassword

…完成步骤

开始步骤-验证

…完成步骤

开始步骤-解释用户或错误

…完成步骤

开始步骤-getSession

…完成步骤

开始步骤-添加会话

…完成步骤

开始步骤-RespondtologinSuccessed

…完成步骤

开始步骤-respondToLoginFail

…完成步骤

获取/用户/配置文件

开始步骤-显示登录

…完成步骤

GET/favicon.ico


我的应用程序可以在这里找到-->这不是一个完整的答案,但是你可以看到我如何在我的项目中处理Auth。 我使用Mongoose、Express、Passport+Passport Local来处理身份验证,并将mongodb连接到持久会话(很难让整个堆栈正常工作)。优点是即使在服务器重启之间也可以检索会话

链接到主文件:

  • (Auth.js)
重要的是:

  • js将帮助您在Mongoose中使用Passport Auth
  • 将connectdb设置为持久会话并不容易,但非常方便
看看我是如何设置connect db的(最好的例子是LoastAndFound.js或.coffee):


注意:请原谅我的代码不够完美,需要更多的注释,而且没有经过测试。

Passport显然是实现这种身份验证的更好、更干净的方法。Mongoose auth和everyauth似乎都没有很好的文档记录。您是否已设法使整个身份验证堆栈正常工作。您还尝试过其他任何一种身份验证策略。我仍然有点不确定我的场景与everauth应用程序的例子有多大的不同。很抱歉反应太晚,我正在ATM机上旅行。是的,它工作得很好!实施passport本地策略非常简单,效果非常好。更难(但可选)的部分是持久化会话,但这与任何auth库都会遇到的问题不同。我没有测试到其他库(mongoose auth、everyauth)
app.use(express.session({
    secret: 'awesome unicorns',
    maxAge: new Date(Date.now() + 3600000),
    store: new common.mongoStore({
        db: Data.mongoose.connection.db
    }, function(err) {
        return console.log(err || 'connect-mongodb setup ok');
    })
 }));