问题标签 [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.
node.js - connect-mongo 每秒创建一个新会话
我的 nodejs 应用程序托管在 Openshift 上。这是我的规格:
节点 v0.10.35,表达 v3.4.8
我的 package.json 依赖项:
这是我的 server.js
问题是 connect-mongo 每秒都会创建一个新会话,正如我从计算数据库中会话集合中的条目数中看到的那样。即使当前没有活动用户使用该网站,会话也会被创建。这是正常的吗?
编辑:是否是由于我使用中间件来检查用户是否在大多数 api 调用中使用护照 isauthenticated 方法登录。但奇怪的是,即使没有用户向服务器发出请求,它也会被调用,正如您从下面的 node.log 中看到的那样,它不断重定向
node.js - 结束的会话没有被销毁
我的应用程序正在使用connect-mongo、express-session、keystone和passport处理登录和用户会话。
但是,当会话结束(用户注销或关闭浏览器窗口)时,会话不会从 MongoDB 会话存储中删除。
这是我的中间件设置:
MongoDB 中会话的集合名称是app_sessions。在我的依赖关系树中搜索表明这是由 Keystone CMS 处理的。
cookie 名称也是keystone.sid
这是我的 Keystone 配置:
最后是来自 MongoDB 的一些示例会话对象:
你能发现为什么会话不会被破坏吗?
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 应用程序有问题。
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”。
任何帮助如何解决上述示例代码中的此错误。谢谢。
node.js - 无法在 connect-mongo 会话存储中使用现有的本机 mongo-db 连接
index.js:
db.js:
如果我正在创建与会话存储的新连接(通过提供 url),它似乎没问题,但如果我尝试使用现有的 mongo 连接,则会收到以下错误:
似乎会话中间件正在调用而不是 mongo db 连接初始化?
node.js - Connect-mongo 语法错误:意外令牌 =>
嗨我有以下错误
我有这些版本:
节点@v3.3.1
快递@4.14.0
猫鼬@4.6.5
mongodb@2.2.11
amazon-web-services - Express Session 和 Amazon Beanstalk 与健康检查
我对 express session、connect-mongo 和 Amazon Beanstalk 有疑问。
每次 Amazon Beanstalk 想要检查运行状况时,它都会向 API 发出请求,但它会在 mongodb 数据库中创建一个新文档。因此,亚马逊在短时间内创建了 200.000 个新文档,其中包含不提供服务的会话。
有没有办法让我忽略那些请求?
谢谢。
mongodb - 即使指定了,Mongoose 仍然尝试使用错误的管理数据库进行身份验证
与数据库的初始连接似乎可以通过以下方式进行身份验证:
然而,在那之后,当我尝试创建一个新会话并对用户进行身份验证时,一切都崩溃了,在 mongo 日志中,我可以看到应用程序尝试使用traderdb
数据库而不是管理数据库对 mongodb 进行身份验证,即使我正确设置了 authSource并且它第一次使用相同的 URI 连接良好。
这是我初始化会话存储的地方。这被放置在调用的回调中mongoose.connect
。
应用程序启动时没有任何失败,mongo 日志确认连接已成功建立并通过 admin 数据库进行身份验证。然而,在那之后,当我尝试实际使用会话存储时,应用程序崩溃并出现错误Error: Error setting TTL index on collection : sessions
。在 mongo 服务器日志中,我可以看到我的应用程序尝试连接和身份验证,traderdb
而不是admin
作为身份验证源。