如何将用户数据存储到节点js express-session中

时间:2015-12-04 07:20:05

标签: javascript node.js session npm server

我在 nodeJS 上使用 express express-session 和mysql。我也能够设置cookie和会话。

这是我的代码:

app.use(cookieParser('3CCC4ACD-6ED1-4844-9217-82131BDCB239'));
session({resave: true, saveUninitialized: true, secret: '2C44774A-D649-4D44-9535-46E296EF984F', cookie: { maxAge: 600000 }}));

我可以在浏览器上看到已设置名为 connect.id 的Cookie。 但是现在我无法理解如何在从mysql数据库获取用户ID和用户名之后存储它们。

用谷歌搜索但无法找到解决方案。请帮助我。谢谢!

2 个答案:

答案 0 :(得分:0)

您不会将这些存储在cookie上,在该用户的第一次登录时,您将cookieID与数据库中的用户名链接,现在每次用户连接时,您首先在数据库中查找cookieID,如果它如果不存在,则发送他需要登录的用户。如果数据库中有一个寄存器,那么您就知道这是受信任的用户。

您可以使用用户名作为密钥,因此如果相同的用户名带有不同的cookieID,则会被覆盖,无论如何,您也可以在数据库中保存时间戳,并删除那些已确定为旧的寄存器。

这基本上是会话的作用,它在cookie中有一个id并保存与该id相关的变量,我对快速会话有不好的体验,所以我更喜欢使用cookie并自己处理会话,这是我推荐的方式。

在节点中,获取cookie:

req.cookie.cookieName

设置一个cookie:

res.cookie('cookieName', cookieValue);

请永远不要将私人数据保存在cookieValue中,因为它可能是隐身的。

答案 1 :(得分:0)

这是您设置会话的方式

<html>
  <div id="online"></div>
</html>

只需在会话中存储数据,

const session = require('express-session');
const MongoDBStore = require('connect-mongodb-session')(session);
const store = new MongoDBStore({
  uri: MONGODB_URI,
  collection: 'sessions'
});
app.use(session({
  secret: 'secret string',
  resave: false,
  saveUninitialized: false
  store: store, /* store session data in mongodb */ 
  cookie: { /* can add cookie related info here */ }
}));

访问方式相同。这些值将使用会话cookie作为查找值存储在服务器端。