AngularJs routeProvider http状态403

时间:2014-07-30 16:18:46

标签: javascript security http-status-code-403 angularjs-routing

我在服务器端进行身份验证和授权。

在angularJs中,我正在使用像这样的routeProvider进行路由。

$routeProvider.
        when('/', {
            templateUrl: 'partials/_home',
            controller: 'HomeCtrl'
        }).
        when('/home', {
            templateUrl: 'partials/_home',
            controller: 'HomeCtrl'
        }).
        when('/users', {
            templateUrl: 'partials/_users',
            controller: 'UserCtrl'
        }).
        when('/users/:id', {
            templateUrl: 'partials/_userForm',
            controller: 'UserCtrl'
        }).
        otherwise({
            redirectTo: '/'
        });

这是要解决的问题,当我得到403角度没有显示服务器页面时,它只是没有做任何事情。

enter image description here

是否有人建议如何处理此问题?

1 个答案:

答案 0 :(得分:38)

AngularJS拦截器 - 更新至v1.4.2

  

拦截器是通过将$ httpProvider添加到$ httpProvider.interceptors数组中的$ httpProvider注册的服务工厂。调用工厂并注入依赖项(如果指定)并返回拦截器。

阅读更多内容:$http angularjs Doc

部分配置(部分)

.config(function ($httpProvider) {
    $httpProvider.interceptors.push('responseObserver');
})

响应 - 观察员工厂

403.html500.html是现有的HTML文件,非常适合用户提供一些帮助内容。

.factory('responseObserver', function responseObserver($q, $window) {
    return {
        'responseError': function(errorResponse) {
            switch (errorResponse.status) {
            case 403:
                $window.location = './403.html';
                break;
            case 500:
                $window.location = './500.html';
                break;
            }
            return $q.reject(errorResponse);
        }
    };
});

扩展有关拦截器的知识:http://djds4rce.wordpress.com/2013/08/13/understanding-angular-http-interceptors/