web-dev-qa-db-fra.com

AngularJs routeProvider http status 403

Je fais l'authentification et l'autorisation côté serveur.

Dans angularJs, je fais le routage à l'aide de routeProvider comme ceci.

$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: '/'
        });

Et voici le problème à résoudre, lorsque j'obtiens un 403 angular ne montre pas la page du serveur, il ne fait tout simplement rien.

enter image description here

Quelqu'un a-t-il une suggestion sur la façon de gérer cela?

20
Charlires

Intercepteurs AngularJS - mis à jour vers v1.4.2

Les intercepteurs sont des usines de service qui sont enregistrées auprès de $ httpProvider en les ajoutant au tableau $ httpProvider.interceptors. La fabrique est appelée et injectée avec des dépendances (si spécifié) et retourne l'intercepteur.

Pour en savoir plus: $ http angularjs Doc

Configuration de la section (en partie)

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

Réponse - Observer Factory

403.html et 500.html sont des fichiers HTML existants, de style agréable avec du contenu d'aide pour l'utilisateur.

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

Pour étendre les connaissances sur les intercepteurs: http://djds4rce.wordpress.com/2013/08/13/understanding-angular-http-interceptors/

38