如何将JWT保存到localStorage

时间:2017-06-01 21:39:54

标签: javascript angularjs jwt satellizer

enter image description here 我使用Angular-satellizer扩展名作为登录/注册功能,但我被困在7号。我无法将JWT保存到localStorage。我检查了chrome中的开发人员工具,但没有令牌。

.controller('loginCtrl', function($scope, $state, $auth, jwtHelper, $window) {
$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"}}

    $window.localStorage.setItem('token', JSON.stringify(tokenPayload));

    $state.go('baba.manga');
    })
};
})

2 个答案:

答案 0 :(得分:1)

我在后端使用JWT和Angular 4以及Node JS。我认为你不需要使用 $ window

  ......
  data => {  
    localStorage.setItem('token', data.token);
    localStorage.setItem('userId', data.userId);
    this.router.navigateByUrl('/');
  },
  ......

这应该有效,如果没有请到plunker / git的链接,我来看看。

答案 1 :(得分:1)

您可以同时使用:

  

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

  

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

如果它在页面刷新时被删除,那么您需要检查是否已在某处重置localStorage或某些脚本正在执行此操作