问题标签 [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.
node.js - NodeJS redis 连接会话 ID 在应该保持不变时重新生成
我尝试在 NodeJS 中使用 Redis 的标准会话持久性:
理论上我应该看到“新会话”这一行。网站站点的所有后续调用都应导致“存在现有会话”。不幸的是,每次通话都会重新生成一个新的会话 ID。浏览器中的 cookie 工作正常,内容正确传输,我可以在
这是控制台日志的样子:
同时在redis-cli中运行“MONITOR”命令时得到以下输出:
当我使用 MemoryStore 而不是 RedisStore 时,一切都按预期工作。
有任何想法吗?
sails.js - 如何使用req.session重定向到sailsjs中的最后一个动作?
我正在创建一个登录应用程序,我需要在其中重定向回调用登录操作的上一个 url。我需要知道sails 是否提供了一个内置方法,通过使用它我可以重定向到以前的操作,而无需创建我自己的辅助函数。
express - 快速会话被覆盖
我有带 Passport 身份验证的 Express 并已向其添加会话,如下所示。
不确定问题是什么,在 Passport 登录中我将会话名称设置为req.session.name
. 如果用户 A 登录它可以正常工作,但是当用户 B 登录时,它不会创建新的会话对象,而是用用户 B 覆盖用户 A 会话对象,包括护照详细信息。同样在浏览器中,cookie 被重置为用户 B,这应该是显而易见的。
node.js - Node.js:为什么不保存会话?
这是代码:
这就是为什么不保存外部功能会话的原因?我的代码有什么问题?
在函数内部,一切都很好,在函数外部 - undefined。
在这个会话之后,逻辑必须得到维护,并且在任何地方都可以使用,或者不是吗?
试图用session声明一个变量,但也没有用,而且没有报错不给,甚至不知道从哪里挖。
升级版:
我的问题与对异步进程的控制缺乏了解有关。我无法理解如何执行原来的一个 - 数据库查询,在会话中保存信息,然后检查会话变量并转发到所需的页面。
如果您知道如何为我制定正确的执行顺序,请写下答案。
javascript - 是否可以通过 sessionID 获得快速会话?
我有一个使用 express-session 的 NodeJS Express 应用程序。这很好用,只要支持会话 cookie。
不幸的是,它还需要与不支持任何类型 cookie 的 PhoneGap 应用程序一起使用。
我想知道:是否可以使用 sessionID 获得快速会话并访问该会话中的数据?
我想我可以将 sessionID 作为查询字符串参数附加到 PhoneGap 应用程序发送的每个请求,如下所示:
https://endpoint.com/dostuff?sessionID=whatever
但我不知道如何告诉 express 检索会话。
node.js - Express Session 能否使用负载均衡器创建相同的会话 ID
我使用 2 台使用 ebs 的机器来为我的网站提供服务。它用 express.js 编写,有 2 个节点服务器正在运行。我使用快速会话创建会话并将其存储在 redis 中。
两台机器是否有可能最终创建相同的会话ID?
javascript - 无法在快速会话中存储变量
我正在尝试为我的 Web 应用程序构建基于会话的身份验证。我有以下身份验证功能:
我还有一个中间件,可确保在访问安全内容时对用户进行身份验证:
问题是我的中间件没有看到authenticate
函数存储的变量。先感谢您。
编辑:
这就是我使用中间件的方式:
node.js - 尝试在 express 中编写用户登录身份验证代码,但无法在节点中使用 express-session 登录
我正在尝试使用 express-session 在 express 中编写用于用户登录身份验证的代码
这是我的accounts.js api
module.exports = 路由器;
这是我的 server.js 代码
我的问题是,在server.js中, req.user得到空值,这就是我无法登录的原因。但是在account.js req.user 中获取的用户数据没有反映在 server.js 中。
同样,如果在accounts.js中,我将next()放在if (req.session.userId)语句中,我可以在 server.js 中获取用户数据,但它会在注销时产生问题。
请帮我解决这个问题。
javascript - 带有 express 4 和 socket.io 的 node.js 中的会话
我想在会话中保留一些数据。我使用 MongoDB 作为会话存储。
我准备了简单的代码来做到这一点。但它,不起作用。我收到了这个错误:
类型错误:无法设置未定义的属性“myVariable”
这是我的代码:
我做错了什么?我使用:“express”:“4.12.3”,“socket.io”:“1.3.5”
编辑 我也尝试使用 express-socket.io-session 包:
但我 console.log() 总是返回 '1'
node.js - 快速会话不保存......除非我刷新我的浏览器?
我正在尝试使用 node 和 express 实现简单的登录,将登录用户的信息存储在 express 会话中。这是我到目前为止所得到的
应用:
我的登录路线是这样做的:
在其他地方,我有这个自动为我的其他路线注入用户信息:
奇怪的是,在我第一次登录后,在随后的请求中,我看到会话不存在(TTY 中的“这里没有会话。”)但是当我刷新浏览器并第二次登录时,它就在那里.
编辑:所以,事件的简化顺序是:
- 客户端: http.post("/login", {userid:..,pw:...});
- 服务器用户注入器路由:失败,没有会话(没关系,因为我们即将创建一个),所以调用 next()
- 服务器登录路由:凭证没问题,所以它应该创建一个会话。然后它将响应返回给客户端。
- 客户端:服务器说我们可以开始了,所以:http.get("/protectedstuff")
- 服务器用户注入器路由:失败,没有会话(什么?它应该在此时创建)
编辑2:更多信息。越来越奇怪了?这似乎仅在服务器重新启动后立即发生,并且仅适用于第一次登录尝试。一旦第一个用户能够登录并获得会话,任何其他登录尝试都将成功。即使第一个用户注销。
在这一点上,我开始怀疑 express-session 中是否存在错误。由于某种原因,第一次调用存储会话变量不起作用。
我也不确定问题出在哪里。我的浏览器使用 Angular 发出非常简单的 http 请求,并且正确存储了用户 ID。我可以很清楚地看到 json 响应的数据对象是 {success: true, user: (user id)},所以一切看起来都很好。我难住了。为什么不在登录路径中快速保存我的会话信息?
软件包版本:
- 正文解析器:1.12.3
- cookie解析器:1.3.4
- 快递:4.12.3
- 快速会话:1.11.1
- 角度:1.3.15