【发布时间】:2015-12-23 08:59:31
【问题描述】:
我的基于 AngularJS 的应用程序旨在使用 localStorage 来保存身份验证后从后端返回的 JWT 身份验证令牌。对于发往后端的每个请求(POST、GET 等),应用程序使用拦截器将令牌捎带到后端。这个过程一直运行良好,直到我遇到以下问题:
我的经理不允许使用
localStorage保存用户名和 JWT 身份验证令牌,因为除非他/她有意退出应用程序(这会从 localStorage 清除缓存),否则它们将保留在浏览器中。如果用户在没有注销的情况下关闭浏览器,缓存将保留在localStorage中。由于问题 1,我改用
sessionStorage来存储用户名和 JWT 身份验证令牌,但是,当用户右键单击某些链接以在新选项卡中打开应用程序时,这会导致进一步的问题或新的浏览器窗口。在新选项卡/窗口中,应用程序无法看到用户已通过身份验证,并且前往后端的请求被拒绝 (401 error),因为应用程序无法在新选项卡/窗口的 sessionStorage 中找到 JWT 身份验证令牌。如果我将用户名和 JWT 身份验证令牌作为变量缓存在 JavaScript 代码中,如果用户刷新浏览器,应用程序将丢失它们。
所以这些是我在 Angular 中使用 JWT 身份验证令牌时的困境。是否有更好的解决方案来处理这些要求:不使用 localStorage 并且应用程序应在新选项卡或新浏览器窗口中继续使用相同的 auth JWT 令牌。谢谢!
【问题讨论】:
-
在stormpath.com/blog/…有一个屠夫
-
我也有同样的问题。 @TonyGW 你找到好的解决方案了吗?
-
哇,还是没有答案。奇怪的是,这个问题只有 3 票赞成和 1 票最喜欢!
标签: javascript angularjs authentication jwt