サーバー側で認証と承認を行っています。
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: '/'
});
そして、ここで解決すべき問題があります。403angularがサーバーページを表示していない場合、何もしません。
誰かがこれを処理する方法の提案をしましたか?
インターセプターは、$ httpProvider.interceptors配列に追加することにより、$ httpProviderに登録されるサービスファクトリーです。ファクトリーが呼び出され、依存関係(指定されている場合)が挿入され、インターセプターが返されます。
さらに読むには: $ http angularjs Doc
.config(function ($httpProvider) {
$httpProvider.interceptors.Push('responseObserver');
})
403.html
および500.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/