【发布时间】:2019-03-01 11:24:41
【问题描述】:
我的 graphql/apollo 服务器有以下突变:
async signup(parent, args, ctx, info) {
args.email = args.email.toLowerCase();
const password = await bcrypt.hash(args.password, 10);
const user = await ctx.db.mutation.createUser(
{
data: {
...args,
password,
permissions: { set: ["USER"] }
}
},
info
);
const token = jwt.sign({ userId: user.id }, process.env.APP_SECRET);
ctx.response.cookie("token", token, {
httpOnly: true,
maxAge: 1000 * 60 * 60 * 24 * 365 // 1 year cookie
});
return user;
},
在本地开发过程中,一旦有新用户注册,就会设置 cookie。这将有助于立即登录新用户。然而,一旦推送到 Now & Heroku,用户就会在数据库中创建,但 cookie 永远不会被设置。
我不确定从哪里开始调试,因为 prod 服务器上没有控制台输出。
请让我知道还有什么要添加的内容,我将进行编辑。
【问题讨论】:
-
您在服务器的响应中看到
Set-Cookie标头吗? -
没有,一个是我刚刚注册新人的数据,另一个是
{"data":{"me":null}} -
我也有类似的问题。这肯定是非常烦人的测试。你说cookie没有在响应中设置,对吧?您的 GraphQL API 是否在与您的应用程序不同的域上运行?也许你需要设置
domain选项。 -
@jkettmann 是的,数据库托管在 Heroku 上,Yoga 服务器运行在 Now.sh 上,前端再次运行在 Heroku 上。什么是域选项?如果您的意思是将 cors 的网址列入白名单,我已经这样做了。
标签: javascript database graphql apollo