问题标签 [connect-mongo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
72 浏览

node.js - 如何使用 connect mongo 在快速会话中按特定值获取特定会话文档?

我正在尝试根据用户 ID 获取所有会话文档,以便我可以在他们成功登录任何机器后通过在会话文档中存储名为 lastviewed 和 date 的变量来重定向,请进一步指导我使用 connect-mongo 进行会话存储

从上面的文档中,我只想像这样查询 { 'session.passport.user':'user_id' }

0 投票
0 回答
470 浏览

node.js - Connect mongo 显示用户会话的单个条目

发生了什么:-我正在使用 connect-mongo 来存储用户会话。据我所知,只要服务器没有重新启动(?),我们就可以在数据库中存储多个用户会话。我有一个登录页面,每当用户登录时,我都会在会话中存储电子邮件地址。我可以看到在 mongodb 中创建的条目。服务器仍在运行并使用隐身选项卡使用不同的凭据登录,我看到以前的条目已被删除并被新用户替换。因此,在任何时候,db 中只有一个最近登录的用户。

我想要什么:-我想为每个登录的用户存储会话。当一次注销时,我检查注销请求的电子邮件地址与数据库条目并删除该会话。所以我的 server.js 包含以下代码:-

0 投票
1 回答
408 浏览

mongoose - 我可以在没有 Mongoose 的情况下使用 connect-mongo 吗?

我更喜欢使用另一个 ORM 或只使用核心 MongoDb 驱动程序。让这成为可能有多难?我目前正在使用 Monk,它是 Mongoskin 之上的轻质包装。

0 投票
2 回答
722 浏览

javascript - Node.js SPA,如何在单个站点访问(页面刷新)和长期站点访问(浏览器打开/关闭)的处理会话之间进行描述

我正在制作具有登录功能的 SPA。我最初使用“express-session”进行会话处理,以便存储用户的 mongoDB _id,并且他们可以在不注销的情况下点击“刷新”,效果非常好。

从这里开始,我想允许用户选中一个“记住我”框,该框将控制长期站点(重新)访问。因此,如果未选中“记住我”,则在给定访问期间,会话处理工作相同(“刷新按钮”保持登录),但一旦关闭浏览器,会话数据就会丢失。相反,检查“记住我”将他们的登录数据存储在我的数据库中(为此使用“connect-mongo”),在完整的服务器访问之间(几天、几周等)保持登录。

问题似乎是浏览器的会话 cookie 和 mongodb 会话条目本质上是联系在一起的,所以我不能在不影响另一个的情况下更改/消除一个。如果这甚至是正确的方法?

所以在这里我得到了我需要的一切:

...使用存储设置会话处理...

...通过“记住我”复选框应用登录功能(在此上下文中使用“持久”属性表示长期持久性)...

...一个单一的入口点,我最初仅根据登录状态创建一个页面。这就是我想如果他们选择不长期坚持,我会简单地从商店中删除条目?或者将 ttl 重置为一秒?我不知道如何使这项工作。删除商店条目会杀死整个事情,因此我什至无法在没有注销的情况下点击“刷新”,即使在商店甚至实施之前这都不是问题......

想法?如果没有明确地以编程方式知道用户何时点击“刷新”而不是更改站点/关闭浏览器,这是否可能实现?

0 投票
1 回答
917 浏览

javascript - 更新快速会话会话

所以我想做的是当用户访问该页面时,它将从 mongodb 数据库中获取他们的用户配置文件,然后使用用户配置文件更新用户会话。

现在我正在使用以下包进行会话:
- express-socket.io-session(允许我通过 socket.io 访问 cookie)
- express-session
- connect-mongo(允许我将会话存储在 mongodb 数据库中)

这是我试图用来更新用户 cookie 的方法

0 投票
1 回答
1496 浏览

node.js - Express-session and tokens in one project

I need explanation in express-session and jwt. E.g. I have shopping cart, and to log in and sign in I use jwt but to store chosen products in shopping cart I would like use express- session and connect-mongo Is that correct way? And my question is in sense and proper solution use sessions and jwt in one project? Maybe better would be use jwt to store product e.g. 3 hours.

0 投票
1 回答
932 浏览

node.js - 即使 MongoStore 使用 connect-mongo,Express 会话也不会持续存在

当我重新启动服务器时,我的会话结束并注销。这不会在常规页面刷新时发生。我正在使用 connect-mongo 来解决这个问题:

var session = require('express-session'); const MongoStore = require('connect-mongo')(session);

这是我用来存储会话的代码,重用了一个名为的现有 Mongo 连接thisDb

在成功登录期间:

在我的 Mongo shell 中,我可以验证登录时是否创建了一个新会话:

{"cookie":{"originalMaxAge":2592000000,"expires":"2017-11-17T20:36:12.777Z","httpOnly":true,"path":"/"},"user":{"newNotifications":false,"username":"max","admin":"true","moderator":"true"},"expires":"2017-11-17T20:36:10.556Z"}

0 投票
1 回答
252 浏览

node.js - Mongodb connect-mongo session 在同一个数据库上存储多个应用程序

我有两个使用 connect-mongo 来存储会话的 SailsJS 应用程序。它们连接到同一个 MongoDB 数据库,问题是当我连接到第一个应用程序时,如果我继续使用第二个应用程序,我会直接在第一个应用程序上断开连接,反之亦然。我不知道我该如何解决这个问题。

0 投票
0 回答
324 浏览

javascript - 快速应用程序之间的共享会话(connect-mongodb)

所以我的最终目标是让多个节点应用程序连接到同一个数据库并在用户之间共享会话。因此,如果您注销一个应用程序,它会注销所有应用程序,登录也是如此。所以这在我的开发环境中有效。我有两个 node express 应用程序连接到同一个 Mongo 会话数据库,所以我可以登录一个应用程序,另一个自动识别会话并将我登录。我已经将它推送到我们的实时 CentOS 服务器并使用 PM2 和 Nginx 服务它. 它目前正在为每个应用程序创建一个新的会话条目。两个应用程序对会话和用户使用相同的数据库。我可以在实时会话数据库中看到每个应用程序都有一个单独的会话。因此,我必须立即登录每个应用程序,而不是一个。这一定与 Nginx 有关,因为它在本地工作。

注意:我正在使用 connect-mongodb-session

这是我在每个 express 应用程序中的 main.js 文件(除端口号外,两者都相同):

这是我的 nginx 配置文件。我在这里尝试了添加“proxy_set_header X-Forwarded-Proto $scheme”的建议:

0 投票
1 回答
507 浏览

javascript - connect-mongo:为什么我不能写入“会话”集合?

我正在使用connect-mongowith express-session,并且会话数据正在按预期写入 Mongo。

但是,我想重用用于在该sessions集合中connect-mongo编写我自己的字段的集合。

我已经定义了自己的会话模型,sessions.js例如:

然后,在我的服务器文件中,我有:

真正让我吃惊的是,上面的打印语句实际上记录了更新的会话对象。但是,当我稍后检查数据库时,文档没有更新。

我也尝试过创建一个完全不同的SessionsAlternative集合。在这种情况下,集合正确更新。这将是一个解决方案,但它不会是最佳的,因为从概念上讲,我要编写的内容应该属于单个会话集合。

这有可能吗,如果是这样,我做错了什么?