我应该在node.js中哪里存储当前用户?

rag*_*lka 5 node.js express

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

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

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

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

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

use*_*109 0

在express中你可以使用session

//To set up session 
app.use(express.cookieParser());
app.use(express.session({secret: 'secret pass', store: sessionStore})); 
//To use it
req.session = {user:name , model:mongo_model};
console.log(req.session.user);
Run Code Online (Sandbox Code Playgroud)

例子

  1. 在这里查看一个简单的例子
  2. 在这个问题中查看如何使用 mongostore 来获取会话数据

  • 有人可以解释一下这里的否决票吗?我想知道为什么这不好。 (3认同)