首页 > 解决方案 > Angularjs http拦截器导致没有路由发生

问题描述

我正在尝试添加一个 $http 拦截器,以便我可以添加 Authorization 标头,但是当我添加它时,所有路由都停止工作,但没有引发错误。

app.service('APIInterceptor', ['userService', function (userService) {
    this.request = function (config) {
        var currentUser = userService.getCurrentUser();
        if (currentUser) {
            config.headers['Authorization'] = "Bearer " + currentUser.access_token;
        }

        return config;
    }
}]);

app.config(['$routeProvider', '$locationProvider', '$httpProvider', function ($routeProvider, $locationProvider, $httpProvider) {
    $routeProvider
        .when("/login", {
            templateUrl: 'Views/login.html?' + $.now(),
            controller: 'loginController',
            controllerAs: 'vm'
        })
        .when("/", {
            templateUrl: 'Views/home.html?' + $.now(),
            controller: 'homeController',
            controllerAs: 'vm'
        });

    // when I comment out the below the routing works
    // with this line in all routing stops working
    $httpProvider.interceptors.push('APIInterceptor');
}]);

标签: angularjs

解决方案


因此,在拦截器中有一些 console.log() 看起来它确实进入了那里,但如果里面有任何错误,它不会报告任何内容。我有 getCurrentUser() 而不是 GetCurrentUser()。有点遗憾,没有错误能够回来,但现在可以正常工作了。


推荐阅读