页面刷新时 Satellizer 登录 JWT 令牌消失

Satellizer login JWT token is gone when page refresh

我正在为 login/register 功能使用 Angular-satellizer 扩展,但我卡在了第 7 位。

令牌已保存到 localStorage,但我在刷新页面时它消失了,$auth.isAuthenticated() 函数返回 false。

.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');
      })
  };
})

也许当您刷新页面时,您正在重置 localStorage 并且最后一个令牌消失了。

试试这个

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

你应该试试这个:

localStorage.setItem('token', data.token);

$window.localStorage.token = JSON.stringify(data.token);

要保存您的令牌,您可以在浏览器本地存储中看到该令牌,除非您需要,否则无需解码该令牌。

它应该不会在页面刷新时被删除,如果它被删除我建议您尝试在某些地方设置断点并调试正在清除本地存储的部分。

浏览器在任何时候都不会删除任何本地存储数据,您的代码可能正在这样做。