2017-06-02 92 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)); 
}