0

首先,如果这个问题没有意义,请道歉。我正在为我的平均堆栈应用程序开发会话管理代码。从最近几天开始,我发现了很多方法来实现它,它们使用 cookie、会话或 http - 标头。我试图实施,但没有成功。

我成功地将拦截器与我的代码链接起来。代码正在监听每个请求/请求。

这是一些代码:

应用程序.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);
        }
    };
}]);

我将非常感谢您的时间和帮助。

4

1 回答 1

1

在 Meanjs 中,您有身份验证控制器

意思是/模块/用户/客户端/控制器/authentication.client.controller.js

但是如果您想在拦截器中使用身份验证服务,请注意注入依赖项并不像在控制器中那样容易。

你需要使用$injector

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

那么您必须确保您的用户已通过身份验证并在您的请求功能中检查,例如

 if (!Authentication.user) {
     $location.path('/'); // or a login page
 }
于 2016-06-03T21:37:22.833 回答