问题标签 [express-session]
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.
javascript - 使用会话发送 XmlHttpRequest(再次)
我有一个页面,我想跟踪当前用户在做什么。为此,服务器给了他一个 id,然后,我想发送一个 XmlHttpRequest 来记录信息,并且我想保留它的 id。
但是,我的服务器作为空会话接收的请求(当请求从 XmlHttpRequest 开始时)。我想到了几种解决方案
我的服务器可以在 js 中打印一个小脚本,以便 js 程序知道它的 id,但我不想这样做,因为客户端可以自己更改它的 id
我的服务器可以在 js 中打印一个小脚本,以便 js 程序可以知道其会话的 id,然后将其发送回服务器,该服务器将能够检索会话并因此检索 id(更好,但我仍然不不喜欢)
所以我有两个问题:
有什么我想念的吗?这样做很简单,我的 XmlHttpRequest 可以将会话转发到服务器?
如果没有,给客户它的会话ID是个好主意吗?如果是这样,我如何从 node.js 中的 id 检索会话?
node.js - req.user 是否传递给客户端?
我正在使用 node.js、express、express-session 和 passport.js 来处理我的项目中的身份验证。在我的 routes.js 中,我处理如下获取请求:
在函数内部,我可以从请求参数中获取用户。我的问题是用户对象来自哪里?用户对象是否传递给客户端并返回?客户端可以更改用户对象以尝试将代码注入我的数据库吗?
提前致谢!
javascript - 在 app.js Node JS 中不可用的一个路由文件中定义的 Express-session
我在 node js 和 express 4 中遇到 express-session 问题。我在 routes/index.js 中设置了一个会话变量,并且在 app.js 中不可用。但在另一个路由文件 users.js 中可用
路线/index.js
路线/users.js
应用程序.js
谁能给我一个解决方案。?
node.js - Mongoose - 通过 findOne() 搜索架构失败
在通过 MongoDB for 设置 sessionStore 时express-session
,我在使用该findOne()
函数来验证用户的信息是否有效且最新时遇到了一些麻烦。
然而,诀窍在于它express-session
负责connect-mongo
管理对数据库的写入。
现在,这似乎可以正常工作,因为文档已输入到我指定的集合中。从集合中返回数据会产生以下结果:
如果问题出现在数据库中,或者通过 Mongoose,我尝试如何查询 SID 似乎并不重要,我使用以下任何方法都不返回任何结果:
通过蒙戈:
通过猫鼬(NodeJS)
问题是,在这两种情况下我都无法返回任何我已经验证在集合中的数据是怎么回事?我是否需要像我一直在尝试做的那样考虑文档中返回的转义引号,还是仅仅通过 mongo shell 输出?
我是否缺少正确搜索此数据的任何步骤?一组新鲜的眼睛将不胜感激!
解决方案:
vinagreti指出,保存到我的集合中的数据不是对象,而是纯文本。
通过参考connect-mongo 的文档,有一个额外的选项stringify
. 此设置字符串化并将会话保存的数据序列化到数据库中。考虑到这express-session
已经产生了一个 JSON 对象,使用stringify()
使得它在集合中不可搜索。
所需要的只是添加stringify: false
到我的 mongoStore 设置中,如下所示:
然后瞧!保存到集合中的所有内容现在都是对象并且可以搜索!感谢vinagreti帮助指出问题!请点赞他的回答!
express - Express session secret - 从客户端到服务器?
我正在使用 Express 4 的快速会话。我对如何将秘密从客户端传递到服务器感到困惑。我假设我需要为每个请求传递秘密,否则我真的不明白秘密的用途。
我该怎么处理这个秘密?如果我应该将它从客户端传递到服务器,那么最好的方法是什么?
如您所见,Passport 负责将会话信息从客户端传递到服务器,但 req.secret 仍然未定义:
node.js - 会话结束时的 Express 4 火灾事件
我正在为快速会话设置会话 cookie 的最大年龄
如何使用事件发射器或 express 的自定义事件(内部带有事件发射器) - 在会话结束时触发事件并将数据发送到视图层?
node.js - 重新发布时节点 Express 会话撤销?
使用节点 v12、Express 4 和 connect-pg-simple
在我们的安全评估过程中发现,如果用户成功登录并再次成功登录,则之前的会话仍然有效。
我希望第二次登录以撤销第一次会话。不这样做意味着用户可以在两个不同的浏览器中登录。
node.js - NodeJS + ExpressJS 用户登录
我目前正在开发一个需要用户登录片段的 Web 应用程序。我已经构建了一个用于获取用户信息和其他信息的 API。但我不能让 NodeJS 与会话一起工作。
所以,我有一个这样的 API 端点用于登录:/api/v1/login
API 的其他端点使用Authorization
包含Token e3f0d20dae2da4e3f0d20dae2da4
值的标头。
我想要做的是,当用户未登录时,将他们重定向到登录页面,并且当用户将其凭据POST JSON
数据提供给/api/v1/login
并保存从正文返回的 Token 对象并将其用于其他 API 调用时。
登录端点返回:
好吧,实际上我已经让人们进入并使用该令牌进行请求,但我遇到的问题是当有两个或更多用户时,req.session
值会覆盖到最新登录的用户。
我怎样才能让它工作?
谢谢。
编辑:
angularjs - 会话变量在请求之间持续存在困难
我的应用程序当前正在从我的文件系统打开并向托管在云 9 上的服务器发出请求。每当我从同一页面提交信息时,我都会从同一页面发出两个请求。
第一个请求是创建新资源,第二个请求是上传文件。完成第一个请求后,我设置了一个会话变量,该变量对于成功处理第二个请求至关重要,因为它用于身份验证,但是当我执行第二个请求时,该变量不存在。
我正在使用 Angular 发出请求,我觉得这是相关的,因为应该存储在客户端上的会话 id 占位符应该在第一个请求之后存在,但事实并非如此,我表示怀疑 Angular 的处理方式可能是请求可能会发生冲突。
为了获得会话 ID,我下载了我的应用程序的脚本文件,同时从磁盘加载了其他所有内容,我确实得到了一个 sid
编辑可能不是将我的应用程序的网址保留在 png 上的最佳决定
在客户端,这就是我执行请求的方式。
在服务器端,我有一条处理一个请求的路由,而另一条处理第二个请求的路由。
并且位于不同的路线
myname
未定义,表明会话没有持续
node.js - Express session MongoDB store: connect-mongo vs connect-mongodb-session
By now (10.7.2016) express-session's github-page suggests two mongodb session stores:
- connect-mongo | A MongoDB-based session store - Github (775 Stars)
- connect-mongodb-session | Lightweight MongoDB-based session store built and maintained by MongoDB - Github (6 Stars)
Which one should i choose and what are the differences between the two of them? By popularity clearly connect-mongo wins, but is it really the "better" product? Why did MongoDB itself bother to programm connect-mongodb-session with an existing solution?
Any advice appriciated.
P.S.: I noted that there are several (outdated) SO questions comparing different MongoDB backed session stored but (as far as i notices) non compared these recommended two.