我试图弄清楚如何通过graphql清除httpOnly:true
客户端只读会话cookie。我在Redis商店中成功使用session.destroy
cookie,但是,res.clearCookie
似乎有冲突导致Cannot set headers after they are sent to the client
logout: requiresAuth.createResolver(
async (parent, args, { req, res }) => {
return req.session.destroy((err) => {
if (err) reject(err);
res.clearCookie(SESS_NAME);
resolve(true);
});
});
谢谢。
答案 0 :(得分:0)
最终解决了这个问题:)注销突变必须是一个承诺,它将在前端执行,以防止执行clearCookie时无法设置标头。
后端解析器
operator void*()
前端
logout: requiresAuth.createResolver((parent, args, { session, res }) => new Promise((resolve, reject) => {
session.destroy((err) => {
if (err) reject(err);
res.clearCookie(config.sess.name);
resolve(true);
});
})),