繁体   English   中英

NodeJ的快速会话选项

[英]NodeJs express-session options

我想使用express-session模块创建一个登录系统。 我不确定我是否做对了所有的事情,并且对秘密选择感到困惑。 我目前对速成会的要求是:

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

而且我已经读到secret参数仅用于cookie( Link ),但是我不想使用cookie。 我只想使用会话。

我现在可以忽略secret参数吗?

除了Quentin指出的那样 ,如果您希望将秘密保密(因为它是一个开源项目,并且您不想将其公开),则可以使用环境变量。

这应该可以解决您的问题:

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

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

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

简短答案:否。您需要使用Cookie。


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

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


如果您确实确实不想使用cookie,那么您将不得不使用其他机制将令牌包含在浏览器的每个请求中,例如将其放入每个URL。 如果您使用trans_sid,这就是PHP所做的……,这是一个坏主意:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM