我应该将JWT令牌存储在哪里?httpOnly对于cookie意味着什么? [英] Where should I store my JWT token and what does httpOnly mean for a cookie?

查看:15
本文介绍了我应该将JWT令牌存储在哪里?httpOnly对于cookie意味着什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我阅读了有关auth的文档。 我从事Nuxt项目,我的服务器返回CookieHtppOnly

我的问题:

关于jwt令牌存储的念力很多,有些不推荐使用localStroage 我还了解到,我们可以直接将令牌复制到下一个请求的头中,但我找不到示例。 另外,当CookieHttpOnly时,我们如何使用它,因为JavaScript无法访问它?

// https://github.com/FormidableLabs/urql/tree/main/exchanges/auth#quick-start-guide
if (result.data?.refreshLogin) {
  // save the new tokens in storage for next restart
  localStorage.setItem('token', result.data.refreshLogin.token);
  localStorage.setItem('refreshToken', result.data.refreshLogin.refreshToken);
  //...
}

资源:

jwt

对推荐答案使用cookie比使用localStorage更安全。通常使用refreshToken刷新的accessToken有较短的过期时间。

以下是httpOnlyhttps://www.ibm.com/mysupport/s/question/0D50z000062kLbCCAU/is-there-a-way-to-read-browser-cookie-with-httponly-flag-set-on-ibpm-856-cf02-

效果的完美解释

客户端API(如JavaScript)无法访问HttpOnly cookie。此限制消除了通过跨站点脚本(XSS)窃取Cookie的威胁。 如果浏览器允许您访问它,则这将是浏览器的缺陷。

如果您希望浏览器修改特定的cookie并且不担心XSS,那么可以删除HTTPOnly标志。只有服务器端代码才应该有权访问这些Cookie。


如果您希望客户端代码修改您的Cookie,则只能设置secure: true,并允许将其用于httpOnly以外的更多用途。

cookie-universal-nuxt非常适合管理客户端Cookie。


回复您的评论:

您说的是什么中间件?

你的东西有没有治疗失眠之类的病?发送GQL调用,看看您是否有什么东西。


我只在客户端使用过GQL,所以我会就它应该在哪里给出我的反馈,但它可能不是百分之百准确。

  1. 您应该有一些后端逻辑来处理整个登录流,但是如果您想要管理某人是否登录,这实际上是在前端。您需要一些状态来查看要向最终用户显示的内容。当然,这依赖于这样的假设,即您仅将应用程序作为SPA运行,并且您的后端充当GQL API。但是,您可能有各种方法来解决这个问题,这取决于页面的隐私程度等等。很难给出这样一个宽泛的答案。

  2. 两个后端都处理JWT。客户端负责存储它并检查它是否过期,然后刷新它。它会将其发送到后端,以查看您是否可以访问请求的数据,依此类推。对于前端,如果您希望将其保存在cookie中以在刷新之间保持不变,那么它位于前端。

  3. JWT刷新令牌存储在前端。当它过期时,您的前端应该将它发送到您的后端,让它更新它的值。然后,您可以保留更新的版本,直到它再次过期。

  4. 如果您所说的资源请求是指访问数据库中包含的值,则这是某种后端作业。您的前端负责调用查询/突变,甚至不知道幕后是什么。这就是GQL的全部意义所在,通过移除典型睡觉API确实存在的所有可能的端点,使前端看起来更加友好。


总结

您的前端不能包含敏感信息,这是获取此处的主要内容。

您的大多数问题都是知道堆栈的哪一侧是相关的。我不确定您是否是全栈开发人员,但您可能应该阅读一些关于GQL一般工作方式的文章。

此外,这里有许多问题。我建议你一次只专注于一件事,不要同时涉及很多方面,否则很难整体理解。

另外,StackOverflow上的这类帖子(要求很多)很快就会关闭。

这篇关于我应该将JWT令牌存储在哪里?httpOnly对于cookie意味着什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆