2017-06-01 153 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