javascript - 在前端从 nodejs 管理 jwt
问题描述
我有一个使用 jwt 身份验证的应用程序,所以我有一个 api /login
,我在其中生成 jwt,例如:
res.cookie('Authorization', 'Bearer ' + token, {httOnly: true});
当我在前端登录时,在反应 js 中,服务器生成 jwt 令牌。
问题:
登录后如何在前端管理jwt?(现在令牌是在cookie中发送的,我无法使用javascript读取它),当我登录后转到另一条路线时,我必须从前端发回令牌,但它只在/login
页面上而不是第二条路线. 我现在可以使用 localStorage 处理令牌,但这并不安全。那么,如果我在另一个页面上登录后导航,如何在我的情况下发回令牌?
解决方案
如果您不切换域,并且 cookie 路径是全局的,那么您可以从前端的任何页面访问它。请参阅:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
此外,在使用 cookie 之前,我会三思而后行。refreshTokens
我建议使用带有(30 分钟)的短期令牌(30 分钟)localStorage
并使用标准标头发送它们Authorization
,而不必担心有人窃取它们。(只是不要在那里存储敏感数据)。在时间用完之前,刷新令牌将定期需要一对新的令牌/刷新。
sessionStorage
如果您不想长时间保留数据,还有一个方法:https ://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage,其中的技巧是,每个选项卡/窗口有分开sessionStorage
的。
推荐阅读
- symfony - 稍后设置实体ID的学说
- algorithm - 当 A[i] != x 时如何获得 P(Xi) = 1 / ( k + 1 ) 的概率
- rest - 绕过 JQL 的长度限制
- machine-learning - 为什么yolo检测不到图像中的所有物体?
- kotlin - Kotlin 未解决的参考:removeAt
- c++ - c++中如何区分0和NULL
- python - 如何运行一组 celery 任务?应用尚未加载
- python - (py)mongo BulkUpdate 基于过滤器的数组中的元素
- replace - JavaScript 刽子手,放置字母
- ios - 如何同步 AVPlayer 和 MTKView