2017-06-02 82 views
4

enter image description hereSatellizer登錄JWT令牌時,頁面刷新

我現在用的是Angular-satellizer擴展登錄/註冊功能,但我停留在7號

令牌被保存到localStorage但我當刷新不見了該頁面消失,並且$auth.isAuthenticated()函數返回false。

enter image description here

.controller('loginCtrl', function($scope, $state, $auth, jwtHelper) { 
    $scope.login = function() { 
    $auth.login($scope.user) 
     .then(function(response) { 
     var gelenToken = response.data; 
     var tokenPayload = jwtHelper.decodeToken(gelenToken.token); 
     console.log(JSON.stringify(tokenPayload)); // Output:{"sub":"1","iat":1496346513,"exp":1497556113,"data":{"role":"admin"}} 
     localStorage.setItem('token', JSON.stringify(tokenPayload)); 
     $state.go('baba.manga'); 
     }) 
    }; 
}) 

回答

4

你應該試試這個:

localStorage.setItem( '令牌',data.token);或 $ window.localStorage.token = JSON.stringify(data.token);

要保存您的令牌,您可以在瀏覽器本地存儲中看到該令牌,除非您需要它,否則不需要解碼該令牌。

它不應該在頁面刷新時被刪除,如果它被刪除,我建議你在地點嘗試斷點並調試清除本地存儲的部分。

瀏覽器在任何時候都不會刪除任何本地存儲數據,您的代碼可能會這樣做。

+0

衛星manuel說'解析令牌並將其保存到localStorage'。解析意味着解碼權嗎? – Nasuh

+0

我不這麼認爲,解析意味着提取並保存,而不是解碼,您必須將編碼的令牌發送給未解碼的服務器。 –

+0

好的。我找到了問題。令牌只爲'login.html'保存,不適用於所有頁面。現在我需要用'index.html'或'$ scope.isAuthenticated = function()'共享這個標記,並用'index.html'的狀態共享這個函數。哪個更好? – Nasuh

1

也許當你刷新頁面,你正在重置的localStorage的和你的最後一個記號不見了。

試試這個

// if the localScore is not set then initialize it 
if(localStorage.getItem('token') === null) { 
    localStorage.setItem('token', JSON.stringify(tokenPayload)); 
}