【问题标题】:Accessing session variables between different node.js files访问不同 node.js 文件之间的会话变量
【发布时间】:2016-07-25 23:45:07
【问题描述】:

我有一个场景,我试图在一个 node.js 文件中设置会话变量,然后在另一个 node.js 中访问相同的会话变量。

我不确定是否需要两次 express,每个 node.js 文件中一次。

有谁知道如何在一个 node.js 文件中设置会话变量,然后调用另一个 node.js 文件中的函数来访问同一个会话变量?

任何建议将不胜感激。

【问题讨论】:

  • 您可以通过多种方式在两个不同的模块之间共享一个值。作为 Express 服务器一部分的会话值通常在多个路由处理程序或中间件处理程序之间共享。我们需要查看您的代码才能给您答案,因为您基本上是在询问 Express 和模块是如何工作的。

标签: node.js redis session-variables node-redis


【解决方案1】:

会话变量通常仅在代表特定用户的请求上下文中才有意义(因为会话属于特定用户)。

因此,如果您正在处理请求,并且希望在另一个模块中使用某些功能,并且其他功能想要访问当前请求的会话状态,那么您通常只需传递 req 对象到另一个模块的方法,以便它可以访问与该请求关联的会话。

如果由于某种原因,当您认为需要访问会话信息时没有处理请求,那么请详细说明您在做什么,因为您必须有权访问用户标识符,即密钥进入会话存储,以便找到正确的会话。


请记住,会话是每个用户的,并且可能有数以亿计的会话。您不会将它们存储在模块变量中。它们存在于会话存储中,并通过用户密钥(通常在 cookie 中)进行访问。

因此,会话仅在特定用户的上下文中才有意义,并且通常是在特定请求的上下文中,使您可以直接访问会话。因此,如果您需要在另一个模块中使用某个函数并且该函数需要访问会话,那么只需将用户会话本身的 req 对象作为参数传递给另一个方法。


与往常一样,如果您向我们展示您的实际代码向我们展示您要解决的真正问题,我们可以更具体地回答您的特定问题。像这样的一般性问题导致我们不得不教授一个广泛的一般性解决方案,我们可能会或可能不会达到你想要做的事情的确切标记,这需要我们更多的文字,而不仅仅是向你展示你自己的几行用于解决问题的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2015-04-11
    • 1970-01-01
    • 2020-10-21
    相关资源
    最近更新 更多