【发布时间】:2022-06-17 12:30:06
【问题描述】:
我有一个 NextJS 前端针对 Keystone 后端进行身份验证。
在本地主机上运行时,我可以登录然后刷新浏览器而不会退出,即浏览器正确读取cookie。
当应用程序部署在外部服务器上时,我仍然可以登录,但是刷新浏览器时似乎没有找到 cookie,就好像我已注销一样。但是,如果我随后转到 Keystone 管理 UI,我仍然处于登录状态。
在浏览器设置中,我可以看到为 localhost 创建了一个“keystonejs-session”cookie。外部服务器不是这种情况。
这里是 Keystone 配置文件中的会话设置。
例如,当 Keystone 部署到 admin.example.com 时,外部服务器上的 process.env.DOMAIN 的值将是 example.com。我也试过.example.com,带有一个前导点,结果相同。 (我相信新规范中忽略了前导点。)
const sessionConfig = {
maxAge: 60 * 60 * 24 * 30,
secret: process.env.COOKIE_SECRET,
sameSite: 'lax',
secure: true,
domain: process.env.DOMAIN,
path: "/",
};
const session = statelessSessions(sessionConfig);
(会话对象然后从@keystone-6/core 传递给配置函数。)
【问题讨论】:
标签: cookies next.js keystonejs