Mongoose-Auth / Express / Connect不保持会话问题

时间:2012-04-19 13:07:31

标签: session node.js authentication express mongoose

我目前正在开发一个节点js app,我正在尝试使用Monggose-Auth创建用户身份验证过程。我已经完成了多个教程示例以及我可以找到的关于如何使用Mongoose-Auth的所有指南,但是我已经碰壁了。

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

开始步骤 - displayLogin

......完成步骤

GET /favicon.ico

开始步骤 - extractLoginPassword

......完成步骤

开始步骤 - 验证

......完成步骤

开始步骤 - interpretUserOrErrors

......完成步骤

开始步骤 - getSession

......完成步骤

开始步骤 - addToSession

......完成步骤

开始步骤 - respondToLoginSucceed

......完成步骤

开始步骤 - respondToLoginFail

......完成步骤

GET / users / profile

开始步骤 - displayLogin

......完成步骤

GET /favicon.ico

我的应用可以在这里找到 - > https://github.com/Themitchell/Node-Express-Connect-Mongoose-Auth-Stack< - 如果你想亲眼看看,应该快速设置!它使用正确的package.json等,所以只需运行

npm install 然后 node server.js

我考虑过从其他地方拉一个例子来尝试构建,但我想了解问题是什么,而不是在我不理解的东西之上进行攻击!

据我所知,mongoose-auth不应该持久保存会话本身,而是我必须通过连接执行此操作,例如我认为我做得正确。

项目中要查看的文件可能在

配置/ environment.js

应用程序/模型/ user.js的

最后

config / routes.js有requireLogin函数(我现在只知道它。

感谢您提前帮助人们:)

1 个答案:

答案 0 :(得分:0)

这不是一个完整的答案,但你可以看到我如何设法在我的项目中处理Auth。 我使用Mongoose,Express,Passport + Passport Local处理Auth和connect-mongodb来持续会话(很难让整个堆栈工作)。优点是甚至可以在服务器重启之间检索会话。

链接到主文件:

重要的是:

  • Auth.js将帮助您很好地使Passport Auth适应您的猫鼬。
  • 将connect-db设置为持久化会话并不容易,非常舒服。

看看我如何设置connect-db(最好看的是LoastAndFound.js或.coffee):

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');
    })
 }));

注意:请原谅我代码不完美,需要更多评论而不进行测试。