我想使用express-session模块创建登录系统。我不确定我是否一切都正确,我对秘密选项感到困惑。我目前正在进行的快速会议是:
app.use(session({
secret: 'important',
resave: true,
saveUninitialized: true,
genid: function(req) {
return uuidv4();
}
}));
我已经读过秘密参数仅适用于cookie(Link),但我不想使用cookie。我只是想使用会话。
我现在可以忽略秘密参数吗?
答案 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的会话管理具有额外的安全风险。