首页 > 解决方案 > 在前端从 nodejs 管理 jwt

问题描述

我有一个使用 jwt 身份验证的应用程序,所以我有一个 api /login,我在其中生成 jwt,例如:

res.cookie('Authorization', 'Bearer ' + token, {httOnly: true});

当我在前端登录时,在反应 js 中,服务器生成 jwt 令牌。
问题:

登录后如何在前端管理jwt?(现在令牌是在cookie中发送的,我无法使用javascript读取它),当我登录后转到另一条路线时,我必须从前端发回令牌,但它只在/login页面上而不是第二条路线. 我现在可以使用 localStorage 处理令牌,但这并不安全。那么,如果我在另一个页面上登录后导航,如何在我的情况下发回令牌?

标签: javascriptnode.jsjwt

解决方案


如果您不切换域,并且 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的。


推荐阅读