【发布时间】:2021-12-27 07:16:52
【问题描述】:
我听说JWT令牌建议存储如下:
-
access_token在应用程序内存中(作为我得到的示例 - 闭包) -
refresh_token在 cookie 条目中 (HttpOnly)
目前,我的access_token存储在localStorage中,用于查看授权状态:
isLoggedIn: state => !!state.token
在 Vuex 中
refresh_token 存储在 cookie 中。
我想摆脱这个。我想知道如何仍然将 access_token 存储在 closure 中?
【问题讨论】:
-
在闭包中存储令牌有什么意义?刷新页面不会丢失吗?
-
@HarunYilmaz localStorage 不安全,http 只有cookie是不可能的,因为JS无权访问它们,那么存储在哪里呢?
-
无,让用户每次刷新页面时重新登录。那样你觉得可以吗?大多数人没有。是的,
localStorage不是绝对安全的,但也与 cookie 相同。您必须在安全性和便利性之间进行权衡。阅读LocalStorage vs Cookies -
您所听到的是正确的。永远不要将令牌存储在本地存储中,因为它可以使用 javascript 轻松访问。您可以将访问令牌存储在内存中,并在 httpOnly cookie 中刷新令牌。但是,由于您无法从 javascript 中读取 httpOnly Cookie,因此您需要使用 refresh_token cookie 在每次重新加载页面时使用 API 获取访问令牌和用户详细信息,然后将访问令牌存储在内存中,并将用户详细信息存储在本地存储中。
-
@Ashwin Valento 事实证明,我获得了 access_token 并将其保存在 Vuex 中,并且每次使用 refresh_token (记录在 cookie 中)刷新页面时 - 我都会获得用户信息和新的 access_token 和更新状态?
标签: javascript vue.js jwt vuex