问题标签 [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.

0 投票
3 回答
2818 浏览

node.js - NodeJS redis 连接会话 ID 在应该保持不变时重新生成

我尝试在 NodeJS 中使用 Redis 的标准会话持久性:

理论上我应该看到“新会话”这一行。网站站点的所有后续调用都应导致“存在现有会话”。不幸的是,每次通话都会重新生成一个新的会话 ID。浏览器中的 cookie 工作正常,内容正确传输,我可以在

这是控制台日志的样子:

同时在redis-cli中运行“MONITOR”命令时得到以下输出:

当我使用 MemoryStore 而不是 RedisStore 时,一切都按预期工作。

有任何想法吗?

0 投票
2 回答
754 浏览

sails.js - 如何使用req.session重定向到sailsjs中的最后一个动作?

我正在创建一个登录应用程序,我需要在其中重定向回调用登录操作的上一个 url。我需要知道sails 是否提供了一个内置方法,通过使用它我可以重定向到以前的操作,而无需创建我自己的辅助函数。

0 投票
0 回答
610 浏览

express - 快速会话被覆盖

我有带 Passport 身份验证的 Express 并已向其添加会话,如下所示。

不确定问题是什么,在 Passport 登录中我将会话名称设置为req.session.name. 如果用户 A 登录它可以正常工作,但是当用户 B 登录时,它不会创建新的会话对象,而是用用户 B 覆盖用户 A 会话对象,包括护照详细信息。同样在浏览器中,cookie 被重置为用户 B,这应该是显而易见的。

0 投票
1 回答
72 浏览

node.js - Node.js:为什么不保存会话?

这是代码:

这就是为什么不保存外部功能会话的原因?我的代码有什么问题?

在函数内部,一切都很好,在函数外部 - undefined

在这个会话之后,逻辑必须得到维护,并且在任何地方都可以使用,或者不是吗?

试图用session声明一个变量,但也没有用,而且没有报错不给,甚至不知道从哪里挖。

升级版:

我的问题与对异步进程的控制缺乏了解有关。我无法理解如何执行原来的一个 - 数据库查询,在会话中保存信息,然后检查会话变量并转发到所需的页面。

如果您知道如何为我制定正确的执行顺序,请写下答案。

0 投票
2 回答
5340 浏览

javascript - 是否可以通过 sessionID 获得快速会话?

我有一个使用 express-session 的 NodeJS Express 应用程序。这很好用,只要支持会话 cookie。

不幸的是,它还需要与不支持任何类型 cookie 的 PhoneGap 应用程序一起使用。

我想知道:是否可以使用 sessionID 获得快速会话并访问该会话中的数据?

我想我可以将 sessionID 作为查询字符串参数附加到 PhoneGap 应用程序发送的每个请求,如下所示:

https://endpoint.com/dostuff?sessionID=whatever

但我不知道如何告诉 express 检索会话。

0 投票
1 回答
380 浏览

node.js - Express Session 能否使用负载均衡器创建相同的会话 ID

我使用 2 台使用 ebs 的机器来为我的网站提供服务。它用 express.js 编写,有 2 个节点服务器正在运行。我使用快速会话创建会话并将其存储在 redis 中。

两台机器是否有可能最终创建相同的会话ID?

0 投票
1 回答
1853 浏览

javascript - 无法在快速会话中存储变量

我正在尝试为我的 Web 应用程序构建基于会话的身份验证。我有以下身份验证功能:

我还有一个中间件,可确保在访问安全内容时对用户进行身份验证:

问题是我的中间件没有看到authenticate函数存储的变量。先感谢您。

编辑:

这就是我使用中间件的方式:

0 投票
1 回答
266 浏览

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 中获取用户数据,但它会在注销时产生问题。

请帮我解决这个问题。

0 投票
0 回答
525 浏览

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'

0 投票
2 回答
3558 浏览

node.js - 快速会话不保存......除非我刷新我的浏览器?

我正在尝试使用 node 和 express 实现简单的登录,将登录用户的信息存储在 express 会话中。这是我到目前为止所得到的

应用:

我的登录路线是这样做的:

在其他地方,我有这个自动为我的其他路线注入用户信息:

奇怪的是,在我第一次登录后,在随后的请求中,我看到会话不存在(TTY 中的“这里没有会话。”)但是当我刷新浏览器并第二次登录时,它就在那里.

编辑:所以,事件的简化顺序是:

  1. 客户端: http.post("/login", {u​​serid:..,pw:...});
  2. 服务器用户注入器路由失败,没有会话(没关系,因为我们即将创建一个),所以调用 next()
  3. 服务器登录路由凭证没问题,所以它应该创建一个会话。然后它将响应返回给客户端。
  4. 客户端:服务器说我们可以开始了,所以:http.get("/protectedstuff")
  5. 服务器用户注入器路由失败,没有会话(什么?它应该在此时创建)

编辑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