2017-06-01 155 views
0

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

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

我不是Angularjs的家伙,但我不认为你” d必须使用'$ window.localStorage',我认为'localStorage'会很好,除非Angularjs阻止你访问全局变量。这可能不是你的解决方案。 – Adam

+0

另外,您是否想要存储解码的令牌或编码的令牌? – Ju66ernaut

+0

你们是对的。这次我可以在我的开发人员工具中看到令牌。但是当我刷新页面时,它又一次消失了,卫星没有看到令牌。 – Nasuh

回答

1

您可以同时使用:

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

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

如果它变得在页面刷新删除,则您需要检查,如果你是在什么地方重置的localStorage或某些脚本做

1

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

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

这应该工作,如果没有请链接到plunker/git,我会看看。

+0

你说得对。这次我可以在我的开发人员工具中看到令牌。但是当我刷新页面时,它又一次消失了,卫星没有看到令牌。 – Nasuh