NodeJs快速会话选项

时间:2018-01-22 09:36:59

标签: javascript node.js express session express-session

我想使用express-session模块创建登录系统。我不确定我是否一切都正确,我对秘密选项感到困惑。我目前正在进行的快速会议是:

app.use(session({
   secret: 'important',
   resave: true,
   saveUninitialized: true,
   genid: function(req) {
       return uuidv4();
   }
}));

我已经读过秘密参数仅适用于cookie(Link),但我不想使用cookie。我只是想使用会话。

我现在可以忽略秘密参数吗?

2 个答案:

答案 0 :(得分:1)

Apart from what Quentin has pointed out(因为它是一个开源项目,您不想将其公之于众) ),您可以使用环境变量。

这可以解决您的问题:

secret: process.env.MY_SECRET || "secret"

如果设置了环境变量,则将使用其值。否则,将使用字符串"secret"

由于这是一个重要的字段,用户应该设置它,您可以稍后检查是否设置了环境变量,并相应地警告用户。

答案 1 :(得分:0)

简答:不。你需要使用cookies。

在会话中存储数据时,会将其放在服务器上与代表用户的标识符关联的存储区域中。

当浏览器向服务器发出请求时,服务器需要某种方式来告知要使用哪个存储区域。它通过将标识符放在cookie中并将其提供给浏览器(然后在浏览器关闭之前将其包含在每个后续请求中)来实现此目的。

如果你真的,真的不想使用cookie,那么你必须使用其他一些机制来在浏览器的每个请求中包含令牌,例如将它放在每个URL中。这就是PHP如果你use trans_sid ......所做的那样......并且被认为是一个坏主意:

  

与基于cookie的会话管理相比,基于URL的会话管理具有额外的安全风险。