与几乎所有 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/