我的基於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