2016-07-11 13 views
4

Ich versuche, einen Benutzer mit JWT-Token zu autorisieren. Aber wenn ich die Seite aktualisiere, geht der JWT verloren und das Token wird bei nachfolgenden Anfragen an den Server nicht gesendet. Ich verwende Localstorage zum Speichern des Tokens und Spring-Mvc für das Backend. Diese ist der Dienst i erstellt haben:Wie verhindert man, dass das jwt-Token bei der Seitenaktualisierung in einer angularjs-Anwendung verloren geht?

'use strict'; 
angular.module('authentication') 
.factory('AuthenticationService', ['$http', '$localStorage',  
'$rootScope','$route', '$q', function($http, $localStorage, $rootScope, 
$route, $q){ 
var service = {loggedInUser: function(){ 
return $q.when($rootScope.user) 
}}; 
service.Login = Login; 
service.Logout = Logout; 

return service; 

function Login(username, password, callback){ 
    $http.post('http://172.16.0.26:7001/Taisys_Server_Current/auth', 
    {username:username, password:password}) 
    .success(function (response){ 
     if(response.token){ 
     $localStorage.currentUser = {username:username,  
     token:response.token}; 

     $http.defaults.headers.common.Authorization = 'Bearer' + response.token; 

     $rootScope.user= $localStorage.currentUser; 

     $rootScope.token = response.token; 


     callback(true); 
     } 
     else{ 
     callback(false); 
     } 
    }); 
} 
function Logout(){ 
    delete $localStorage.currentUser; 
    $http.defaults.headers.common.Authorization = ''; 
    $route.reload(); 
    } 
    }]); 
+0

Cookies/Web-Speicher (local/session) –

+1

localstore nicht auf gelöscht werden. Seitenaktualisierung Wie haben Sie den Token auf die $ http-Anfrage gesetzt? –

Antwort

1

Sie haben dies zu verwenden, wenn Sie bereits angemeldet sind

$http.defaults.headers.common.Authorization = 'Bearer' + $localStorage.currentUser.token; 
+0

Ich habe es versucht, aber es funktioniert nicht. es geht immer noch nach der Seitenaktualisierung verloren. und es wird nicht mit den nachfolgenden Anforderungen nach der Seitenaktualisierung gesendet. – darkknight

+0

$ http.defaults.headers.common.Authorization wird nach einer Seitenaktualisierung verloren gehen. Sie müssen es beim erneuten Laden der Seite einstellen. Ich benutze es im Laufblock. –