为了遵守GDPR而不使用烦人的cookie横幅,我希望我网站上的公共页面不存储cookie。为了方便注册用户的旅程,我想使用flash消息。问题是,这两者似乎不兼容,因为设置会话:
const session = require('express-session');
// Initialize mongodb session storage to remember users.
const store = new MongoDBStore({
uri: config.mongoUri,
// The 'expires' option specifies how long after the last time this session was used should the session be deleted.
// Effectively this logs out inactive users without really notifying the user. The next time they attempt to
// perform an authenticated action they will get an error. This is currently set to 3 months (in milliseconds).
expires: max_session_ms,
});
// Enable sessions using encrypted cookies
app.use(
session({
cookie: {
// Specifies how long the user's browser should keep their cookie, probably should match session expiration.
maxAge: max_session_ms,
sameSite: "strict",
},
store: store,
secret: config.secret,
signed: true,
resave: false, // Unknown effect. See https://github.com/expressjs/session#resave
saveUninitialized: false, // Save only explicitly, e.g. when logging in.
httpOnly: true, // Don't let browser javascript access cookies.
secure: config.secureCookies, // Only use cookies over https in production.
})
);
和带有的闪存信息
const flash = require("express-flash"); // Disabled to avoid cookies.
app.use(flash());
在浏览器中存储一个cookie,其中包含用于公共页面的空flash消息。我不认为只存在服务器端的flash消息(请参阅仅服务器端的flash消息(无cookie((。我尝试设置res.locals
,但它在重定向之间被删除。
是否可以只为同意网站登录区条款的访问者存储cookie,而不为一般访问者存储cookie?
关于您的问题的3条备注:
- 请求同意并非基于GDPR,而是由欧盟指令2002/58/CE请求的
- 该指令明确指出,如果在用户的浏览器上存储会话,则无需请求同意
- 从欧盟指令的角度来看,存储cookie或闪存是相同的,在需要的情况下,您无法避免请求同意,将cookie替换为在用户浏览器中写入数据的任何内容
- 如果您不清楚这些规则,请查看CNIL的页面(法国数据权威机构保护(,例如:https://www.cnil.fr/fr/nouvelles-regles-cookies-et-autres-traceurs-bilan-accompagnement-cnil-actions-a-venir
编辑:
对于每个人来说,为了澄清何时需要同意,最好直接阅读指令文本——它非常清楚(电子隐私2002/58指令第5.3条(:
- 成员国应确保使用电子通信网络存储信息或访问存储在用户或用户的终端设备中的信息仅在相关订阅者或用户提供了关于处理目的的清晰和全面的信息(…(,并有权拒绝数据进行此类处理控制器。这不应妨碍进行或促进通过电子通信网络进行通信,或者提供信息社会服务是绝对必要的由订户或用户明确请求