2016-04-08 5 views
0

Ich habe eine Angular App mit Authentifizierung, alles funktioniert gut wie erwartet.Angular App sollte eingeloggt bleiben, bis App im Browser geöffnet ist

Aber wir müssen, dass Anwendung/Sitzung/Token sollte gültig sein, obwohl es keine Aktivität und App noch im Browser geöffnet ist.

und Token sollte nur dann abgelaufen sein, wenn der Benutzer sich selbst abmeldet.

Ich habe eine Idee, aber ich weiß nicht, wie ich es auf Anwendungsebene implementieren soll.

Ich möchte eine Anfrage an die API gesendet werden, die den AccessStoken alle 10 Minuten aktualisieren wird.

Wo kann ich diese Logik implementieren?

Danke in fortgeschrittenem.

Antwort

1

Gut am Frontend können Sie das Token in einem Cookie oder $ window.sessionStorage gespeichert halten und Sie können es für die weiteren API-Aufrufe weiterverwenden, die eine Authentifizierung benötigen. Sie können eine Fabrik erstellen

.factory('Authentication', function ($window){ 

    return { 

    store_token: function(token){ 
     $window.sessionStorage.setItem('token', token); 
    }, 


    get_token: function(){ 
     return $window.sessionStorage.getItem("token"); 
    } 
    }; 
}); 

Dann im Controller

.controller('MyCtrl', function ($scope, Athentication, Api, $interval){ 

    function myfunction() 
    Api.get_token({username: $scope.username, password: $scope.password}).$promise.then(function(data){ 
     if(data.success){ 
     Authentication.store_token(data.token); 

     } 
    }); 
    myfunction(); 
    $interval(myfunction, 1000 * 60 * 10); 
}); 
+0

Danke für Ihre Antwort Token zu speichern. Ja, das ist, was wir tun, aber Token wird auch in Redis-Cache im Back-End für 10 Minuten gespeichert, und dieses Token kann nicht aktualisiert werden, wenn einige Anforderungen gemacht werden. das heißt, auf der Seite passiert keine Aktivität, dann läuft das Token ab. und ich möchte eine Token-Validierungsanfrage senden, während der Benutzer inaktiv ist, um das Token am Leben zu erhalten. – danyal14

+0

Ich habe die Antwort bearbeitet – akniazi

+0

Das heißt ich muss dieses Intervall in jedem Controller aktivieren, richtig? und es gibt keine Möglichkeit, diesen Anruf global zu definieren, nachdem der Benutzer angemeldet ist. – danyal14

Verwandte Themen