javascript - 使用 graphiql 时设置的 Cookie,但在使用前端时没有设置
问题描述
我正在尝试将我的令牌保存在后端的 cookie 中。当我使用 graphiql 检查我的函数时,令牌会保存,当我询问时我会得到它(context.cookies.token)。但是后来我从我的前端尝试它,并且 cookie 没有保存(并且没有出现在我的 dev-tools -> 应用程序中)。当我尝试使用 context.cookies.token 获取它时,我没有定义。
我的登录功能(这里我想将我的令牌保存在 cookie 中并在其他功能中使用它,但这次我正在检查此功能中的所有进程)
const login = async (parent, args, context, info) => {
coenter code herenst sql = `SELECT * FROM user WHERE username = "${args.username}"`;
const results = await context.dbService.runSQL(sql);
const user = results[0]
if (!user) throw new Error('Invalid username or password');
const valid = await bcrypt.compare(args.password, user.password);
if (!valid) throw new Error('Invalid username or password');
const token = jwt.sign({ userId: user.id }, APP_SECRET);
context.res.cookie('token', token, {maxAge: 3600000});
console.log('cookies', context.cookies.token);
return {
token,
user
};
};
在返回前的最后两行,我保存了令牌 - 仅当我在 graphiql 工具中检查它时,此行才有效。并尝试从“req.cookies.token”(上下文包括所有 req 属性)中获取它,在 graphiql 中,我在这里获取令牌,当 req 来自前端时,我得到了 undefined
请帮我解决这个问题。我尝试了 async-await 和没有,httpOnly 和没有。我的后端在 localhost:3030 上运行,我的前端在 localhost:3000 上运行。我正在打开我的 localhost:3030 并且在我的开发工具 -> 应用程序 -> cookie 中看不到任何内容。
谢谢!
解决方案
推荐阅读
- github - 如何在不输入密码的情况下推/拉到github
- javascript - 使用 DOM 将不同大小的金字塔输出到网页
- websphere - 无法在 Ibm cognos 分析中找到新用户选项
- java - 在 Spring Boot 中为复杂的请求主体创建 DTO 的方法应该是什么
- listview - 在 listView 中获取选中的项目并将它们的标签放在 listBox 中
- sql - 相同的 SQL 查询在 PostgreSQL 和 NodeJS 中使用 Date 给出不同的输出
- coq - 有人知道 mult 在 coq 中是如何工作的吗?
- javascript - 我无法通过 fetch API 获取 XML 数据 - 被 CORS 策略阻止
- java - 在 Spring Boot REST API 中设置默认响应内容类型
- asp.net-core - 序列在找到元素一次时不包含匹配元素