2016-06-03 12 views
0

Erstens, Entschuldigung, wenn diese Frage keinen Sinn ergibt. Ich entwickle Code für das Session Management für meine Mean Stack App. Von den letzten Tagen habe ich viele Wege gefunden, um es zu implementieren, die entweder Cookies, Sitzungen oder http - Header verwenden. Ich habe versucht zu implementieren, aber habe keinen Erfolg.Aufrechterhaltung der Sitzung mit Interceptor Cookies/Server-Sitzungen

Ich bin erfolgreich den Interceptor mit meinem Code verknüpfen. Der Code hört auf jede Anfrage/Res. Hier

ist ein Code:

app.js

angular.module('MyApp', [ 
    'ngMaterial', 
    'ngMdIcons', 
    'ui.router', 
    'e3-core-ui.services', 
    'e3-core-ui.utils' 
]) 
.config(['$stateProvider', '$routeProvider','$httpProvider','$mdThemingProvider', '$mdIconProvider', function($stateProvider, $routeProvider, $httpProvider, $mdThemingProvider, $mdIconProvider) { 
$httpProvider.interceptors.push('YourHttpInterceptor'); 
... 

Interceptor-Code

angular.module('MyApp') 

.factory('YourHttpInterceptor', ['$q', 
function($q,) { 
    return {   
     'request': function(config) { 
      console.log("req"); 
      return config; 
     },  

     // Optional method   
     'response': function(response) { 
      // do something on response success 
      console.log("inside the response "); 
      return response; 
     }, 

     // optional method 
     'responseError': function(rejection) { 
      // Here you can do something in response error, like handle errors, present error messages etc. 
      console.log("inside the response error "); 
      return $q.reject(rejection); 
     } 
    }; 
}]); 

ich für Ihre Zeit und Hilfe sehr dankbar sein wird.

+0

was meinst du mit "Sitzung mit Interceptor beibehalten"? Sie können immer noch einen Cookie vom Server bekommen, um eine Sitzung zu speichern, ohne einen Interceptor zu verwenden, schauen Sie besser auf eine Authentifizierungsbibliothek wie Pass –

+0

@ jack.the.ripper, ich versuche, die Sitzungsverwaltung in der MEAN App zu implementieren. So, wenn Session Timeout, Benutzer umleiten, um Login-Seite. Gerade jetzt, nach 20 Minuten, trennen Sie die Verbindung zur App und beenden Sie die Anzeige der Daten, aber die App-Benutzeroberfläche funktioniert. Ich möchte etwas implementieren, so dass, wenn redis Disconnect und Benutzer versuchen, jede Anfrage feuern, umleiten, um Login-Seite. Sinn ergeben?!! –

+0

es ist jetzt klarer, werfen Sie einen Blick auf meine Antwort –

Antwort

1

In Meanjs Sie den Authentifizierungs Controller

mittlere/modules/Benutzer/Client/controllers/authentication.client.controller.js

haben, aber wenn Sie möchten, den Authentifizierungsdienst verwenden, in Ihr Abfangjäger, seien Sie sich dessen bewusst, dass es nicht so einfach ist, eine Abhängigkeit zu injizieren, als dies in einem Controller zu tun.

Sie $injector

var AuthService = $injector.get('Auth'); 

verwenden müssen, dann werden Sie sicher sein, müssen Ihre Benutzer authentifiziert und prüfen Sie, ob in Ihrer Anfrage-Funktion, so etwas wie

if (!Authentication.user) { 
    $location.path('/'); // or a login page 
} 
Verwandte Themen