我的基于AngularJS的应用程序旨在使用localStorage来保存身份验证后从后端返回的JWT身份验证令牌。对于进入后端的每个请求(POST,GET等),应用程序都使用拦截器将标记附加到后端。这个过程一直很好,直到我遇到了以下问题:Angular中的身份验证:处理新标签页或新浏览器窗口
我的经理不允许使用
localStorage
保存的用户名和智威汤逊身份验证令牌,因为他们会在浏览器坚持,除非他/她故意注销的应用程序(它从localStorage清除缓存)。如果用户关闭浏览器而不注销,则缓存将保留在localStorage中。因为问题1,我切换到使用
sessionStorage
来存储用户名和JWT身份验证令牌来代替,不过,这将导致更多的问题,当用户右击某个链接在新选项卡或新浏览器中打开应用程序窗口。在新的选项卡/窗口中,应用程序无法看到用户已通过身份验证,而到后端的请求被拒绝(401 error
),因为应用程序无法在新选项卡/窗口的sessionStorage中找到JWT身份验证令牌。如果我将用户名和JWT授权令牌作为变量缓存在JavaScript代码中,那么如果用户刷新浏览器,应用程序将丢失它们。
所以这些都是我在使用JWT授权令牌时的两难处境。有没有更好的解决方案来处理需求:不使用localStorage,应用程序应该在新选项卡或新浏览器窗口中继续使用相同的身份验证JWT令牌。谢谢!
也许是饼干? – CollinD
在这个https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ –
有一个屠夫我有完全相同的问题。 @TonyGW你找到了一个好的解决方案? – goflo