【问题标题】:Mongoose-Auth/Express/Connect Not holding onto session issueMongoose-Auth/Express/Connect 不保留会话问题
【发布时间】:2012-05-01 00:12:25
【问题描述】:

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

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

开始步骤 - displayLogin

...完成步骤

GET /favicon.ico

开始步骤 - 提取登录密码

...完成步骤

开始步骤 - 验证

...完成步骤

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

...完成步骤

开始步骤 - getSession

...完成步骤

开始步骤 - addToSession

...完成步骤

开始步骤 - respondToLoginSucceed

...完成步骤

开始步骤 - respondToLoginFail

...完成步骤

GET /users/profile

开始步骤 - displayLogin

...完成步骤

GET /favicon.ico

可以在这里找到我的应用程序 --> https://github.com/Themitchell/Node-Express-Connect-Mongoose-Auth-Stack

npm 安装 然后 节点服务器.js

我想从其他地方提取一个示例来尝试构建,但我想了解问题所在,而不是在我还不了解的东西之上破解!

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

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

config/environment.js

app/models/user.js

最后

config/routes.js 有 requiresLogin 功能(我现在只知道它在这里。

提前感谢您的帮助:)

【问题讨论】:

    标签: session node.js authentication express mongoose


    【解决方案1】:

    这不是一个完整的答案,但您可以看到我如何在我的项目中处理 Auth。 我使用 Mongoose、Express、Passport + Passport Local 来处理 Auth 并使用 connect-mongodb 来保持会话(很难让整个堆栈正常工作)。优点是即使在服务器重新启动之间也会检索会话。

    链接到主要文件:

    什么是重要的:

    • Auth.js 将帮助您在 Mongoose 中调整 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');
        })
     }));
    

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

    【讨论】:

    • Passport 显然是一种更好、更简洁的方式来实现这种身份验证。 Mongoose-auth 和everyauth 似乎都没有很好的文档记录。您是否设法让整个身份验证堆栈正常工作。您是否也尝试过其他任何一种身份验证策略。我仍然有点不确定我的场景与那里的示例 everauth 应用程序有很大不同。
    • 抱歉回复晚了,我正在旅行 ATM。是的,它工作得很好!实施护照本地策略真的很简单,而且效果很好。更难(但可选)的部分是保持会话,但这是任何身份验证库都会遇到的不同问题。我没有测试到其他库(猫鼬身份验证,everyauth)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2021-10-20
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多