session - Mongoose-Auth/Express/Connect 不保留 session 问题

标签 session node.js authentication express mongoose

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

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

开始步骤 - 显示登录

...完成步骤

获取/favicon.ico

开始步骤 - 提取登录密码

...完成步骤

开始步骤 - 验证

...完成步骤

开始步骤 - 解释UserOrErrors

...完成步骤

开始步骤 - getSession

...完成步骤

开始步骤 - addToSession

...完成步骤

开始步骤 - respondToLoginSucceed

...完成步骤

开始步骤 - respondToLoginFail

...完成步骤

获取/用户/个人资料

开始步骤 - 显示登录

...完成步骤

获取/favicon.ico

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

npm 安装 然后 Node 服务器.js

我考虑过从其他地方获取一个示例来尝试和构建,但我想了解问题是什么,而不是在我还不理解的东西上进行修改!

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

项目中要查看的文件可能位于

配置/环境.js

应用程序/模型/user.js

最后

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

感谢大家提前提供的帮助:)

最佳答案

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

主文件链接:

重要的是:

  • Auth.js 将帮助您在 Mongoose 中适应 Passport Auth。
  • 将 connect-db 设置为持久 session 并不容易,但非常方便。

看看我如何设置 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');
    })
 }));

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

关于session - Mongoose-Auth/Express/Connect 不保留 session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228772/

相关文章:

PHP登录系统,如何保护它

ruby-on-rails - Ruby on Rails - 表单提交上的 session 变量

javascript - 如何在 node.js 和 Cloud Functions for Firebase 上获取正确的日期和月份?

API 身份验证设计和可破解性

authentication - 仅针对特定 URL 模式为客户端身份验证配置 tomcat

javascript - Node.js 中的匿名函数和 => 表示法有什么区别?

php - 唯一识别用户的最佳方式

php - 为什么 "Expires"是 1981 年?

php - 如何在 PHP 中重新初始化 session ?

javascript - 使用已注册的协议(protocol)从网页打开我的 Electron App