I'm doing authentication and authorization in the server side.
In angularJs I'm doing the routing using the routeProvider like this.
$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: '/'
});
And here is the problem to solve, when I get a 403 angular is not showing the server page, it just does not do nothing.
Did some one has a suggestion of how to handle this?
The interceptors are service factories that are registered with the $httpProvider by adding them to the $httpProvider.interceptors array. The factory is called and injected with dependencies (if specified) and returns the interceptor.
To read more: $http angularjs Doc
.config(function ($httpProvider) {
$httpProvider.interceptors.push('responseObserver');
})
403.html
and 500.html
are existing HTML files, nice styled with some help content for user.
.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);
}
};
});
To extend knowledge about interceptors: http://djds4rce.wordpress.com/2013/08/13/understanding-angular-http-interceptors/