Поддерживать сессию, используя куки / перехватчики Interceptor

Во-первых, извинения, если этот вопрос не имеет смысла. Я разрабатываю код для управления сессиями для моего приложения среднего стека. За последние несколько дней я нашел много способов реализовать это, используя куки, сессии или http - заголовки. Я пытался реализовать, но не добился успеха.

Я успешно связал перехватчик с моим кодом. Код прослушивает каждый запрос.

Вот некоторый код:

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

Перехватчик-код

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);
        }
    };
}]);

Я буду очень благодарен за ваше время и помощь.

1 ответ

В Meanjs у вас есть контроллер аутентификации

означают / модули / пользователей / клиентов / Контроллеры /authentication.client.controller.js

но если вы хотите использовать службу аутентификации в вашем перехватчике, просто помните, что внедрение зависимости не так просто, как это сделать в контроллере.

вам нужно будет использовать $ инжектор

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

тогда вы должны будете убедиться, что ваш пользователь аутентифицирован, и проверить это в вашей функции запроса, что-то вроде

 if (!Authentication.user) {
     $location.path('/'); // or a login page
 }
Другие вопросы по тегам