问题标签 [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 投票
3 回答
2577 浏览

node.js - connect-mongo 每秒创建一个新会话

我的 nodejs 应用程序托管在 Openshift 上。这是我的规格:

节点 v0.10.35,表达 v3.4.8

我的 package.json 依赖项:

这是我的 server.js

问题是 connect-mongo 每秒都会创建一个新会话,正如我从计算数据库中会话集合中的条目数中看到的那样。即使当前没有活动用户使用该网站,会话也会被创建。这是正常的吗?

编辑:是否是由于我使用中间件来检查用户是否在大多数 api 调用中使用护照 isauthenticated 方法登录。但奇怪的是,即使没有用户向服务器发出请求,它也会被调用,正如您从下面的 node.log 中看到的那样,它不断重定向

0 投票
1 回答
711 浏览

node.js - 存在 set-cookie 字段,但未在浏览器的资源/应用程序选项卡中设置

我在响应标头中设置了一个 cookie,但是我的浏览器没有存储 cookie。前端/后端组件分别在 localhost:8080/8082 上运行。

使用nodev5+、expressv4+ 并尝试了两者connect-mongo/connect-redis

Chrome v. 52.0.2743.82

尽管 Chrome 应该可以很好地使用 cookiedomain=localhost已经有一段时间了,但我仍然尝试在/etc/hosts文件中创建一个 PTR,如127.0.0.1 local.com.

这是我在响应中看到的一组标头字段:

在此处输入图像描述

我试过禁用httpOnlyflag,还是一样。

0 投票
1 回答
1735 浏览

node.js - 结束的会话没有被销毁

我的应用程序正在使用connect-mongoexpress-sessionkeystonepassport处理登录和用户会话。

但是,当会话结束(用户注销或关闭浏览器窗口)时,会话不会从 MongoDB 会话存储中删除。

这是我的中间件设置:

MongoDB 中会话的集合名称是app_sessions。在我的依赖关系树中搜索表明这是由 Keystone CMS 处理的。

cookie 名称也是keystone.sid

这是我的 Keystone 配置:

最后是来自 MongoDB 的一些示例会话对象:

你能发现为什么会话不会被破坏吗?

0 投票
1 回答
520 浏览

node.js - 每次我重新打开浏览器时,我的 Node.js Web 应用程序都会建立新会话

每次我关闭所有浏览器窗口然后再次打开 Web 应用程序时,都会建立一个新会话,这意味着我必须再次进行身份验证。

供您参考,我使用express@4.14.0作为 Web 应用程序框架,express-session@1.14.1+connect-mongo@1.3.2作为中间件来存储会话和passport@0.3.2进行身份验证。

下面是 cookie 和 session 配置的代码:

存储在 MongoDB 中的“旧”会话还有两周到期。

似乎 Node.js 应用程序无法从浏览器识别“旧”会话,因此创建一个“新”会话并告诉浏览器使用“新”会话。

它不会偶尔发生,但总是发生,所以我相信我的 Web 应用程序有问题。

0 投票
0 回答
366 浏览

express-session - Nodejs/Express 会话 - 错误:发送后无法设置标头

尝试通过简单的 nodejs 示例应用程序使用快速会话时出现以下错误。

当“resave”设置为true时,会出现以下错误,但是当设置为false时,没有错误。

GET / 304 13.380 ms - - 错误:发送后无法设置标头。在 ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11) 在 ServerResponse.header (/Volumes/SURESH/GSKLabs/NodeApp/node_modules/express/lib/response.js:718:10) 在 ServerResponse.contentType (/Volumes /SURESH/GSKLabs/NodeApp/node_modules/express/lib/response.js:551:15) 在 ServerResponse.send (/Volumes/SURESH/GSKLabs/NodeApp/node_modules/express/lib/response.js:138:14) 在完成(/Volumes/SURESH/GSKLabs/NodeApp/node_modules/express/lib/response.js:957:10)

下面是代码 app.js

路线/index.js

包.json

据我了解,由于 resave:true, express 会话试图在响应已经发送后设置 cookie。无法更改为 resave:false,因为在快速会话中使用滚动选项需要为“true”。

任何帮助如何解决上述示例代码中的此错误。谢谢。

0 投票
1 回答
627 浏览

node.js - 无法在 connect-mongo 会话存储中使用现有的本机 mongo-db 连接

index.js:

db.js:

如果我正在创建与会话存储的新连接(通过提供 url),它似乎没问题,但如果我尝试使用现有的 mongo 连接,则会收到以下错误:

似乎会话中间件正在调用而不是 mongo db 连接初始化?

0 投票
1 回答
768 浏览

node.js - Connect-mongo 语法错误:意外令牌 =>

嗨我有以下错误

我有这些版本:

节点@v3.3.1

快递@4.14.0

猫鼬@4.6.5

mongodb@2.2.11

0 投票
1 回答
156 浏览

amazon-web-services - Express Session 和 Amazon Beanstalk 与健康检查

我对 express session、connect-mongo 和 Amazon Beanstalk 有疑问。

每次 Amazon Beanstalk 想要检查运行状况时,它都会向 API 发出请求,但它会在 mongodb 数据库中创建一个新文档。因此,亚马逊在短时间内创建了 200.000 个新文档,其中包含不提供服务的会话。

有没有办法让我忽略那些请求?

谢谢。

0 投票
0 回答
81 浏览

mongodb - 即使指定了,Mongoose 仍然尝试使用错误的管理数据库进行身份验证

与数据库的初始连接似乎可以通过以下方式进行身份验证:

然而,在那之后,当我尝试创建一个新会话并对用户进行身份验证时,一切都崩溃了,在 mongo 日志中,我可以看到应用程序尝试使用traderdb数据库而不是管理数据库对 mongodb 进行身份验证,即使我正确设置了 authSource并且它第一次使用相同的 URI 连接良好。

这是我初始化会话存储的地方。这被放置在调用的回调中mongoose.connect

应用程序启动时没有任何失败,mongo 日志确认连接已成功建立并通过 admin 数据库进行身份验证。然而,在那之后,当我尝试实际使用会话存储时,应用程序崩溃并出现错误Error: Error setting TTL index on collection : sessions。在 mongo 服务器日志中,我可以看到我的应用程序尝试连接和身份验证,traderdb而不是admin作为身份验证源。

0 投票
1 回答
3997 浏览

node.js - MongoError:未授权(数据库名称)执行命令

我正在使用 Node.Js、Expressjs、mLab(托管我的数据库)和 mongoDB

我收到未在 Streetinform(我的数据库名称)上授权执行命令的错误。{listIndexes:“会话”,光标:{}}

这是错误。

在此处输入图像描述

这就是我连接到我的数据库的方式

这是我的图书馆

建立与数据库的连接