node.js - 我应该将当前用户存储在 node.js 中的什么位置?

标签 node.js express

与几乎所有 Web 应用程序一样,我需要一种在我的 node.js 应用程序中引用当前用户的方法。

我的登录/ session 系统正常工作,但今天我注意到,当我在一个浏览器中登录我的应用程序并在另一个浏览器中查看它时,我可以看到与在第一个浏览器中看到的相同的数据。

我目前正在将有关当前用户的信息存储在全局 app.current_user 对象中,但我现在意识到这是在所有请求/ session 之间共享的,因为 node.js 是单线程的 - 因此,这是一个坏主意.

存储对当前用户的引用的正确方法是什么?当前用户不仅仅是用户数据的散列,而是 Mongoose 模型,所以我猜存储在 cookie 中不是一个好主意?

顺便说一句 - 我还存储了用户的设置和一些我不想在每次对用户及其设置进行操作时再次获取的东西(在单个请求中可能会发生很多次)。我想您可能会说我正在将当前用户缓存在内存中。

最佳答案

目前存储当前用户信息的正确位置似乎是在请求对象中。

如果您不喜欢将请求对象传递给 mongoose 或其他模块的想法,那么您需要对路由器/ Controller /中间件进行任何更改。例如,我可以在我的 posts_controller update() 操作中为 Post 模型设置 lastModifiedBy 用户 ID。

您还可以尝试使用相当新的 domain 功能来存储当前用户数据,但是在使用 Mongoose 时,它​​没有帮助,因为 Mongoose 尚不支持域:https://github.com/LearnBoost/mongoose/pull/1337

关于node.js - 我应该将当前用户存储在 node.js 中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15622618/

相关文章:

javascript - express gzip 静态内容

javascript - Chai 期望 [Function] 抛出一个(错误)未通过测试(使用 Node)

node.js - Nodejs 全局变量的使用

express - 使用 Passport.js 显示 flash 消息

node.js - 如何在 mongoDB 中减去 2 个操作?

json - 无法迭代 Node 、express 应用程序中的 json 对象

mysql - 日期查询 MySQL

javascript - 从客户端请求使用 Node 运行 Bash 脚本

javascript - p5.j​​s canvas 带椭圆的绘图路径

javascript - MongoDB 对填充字段的查询