まず、コントローラーごとにJWTトークンを含むconfigAuth
のヘッダーがあります。異なるリクエスト(URL)のインターセプタを分割する方法は?
var configAuth = {
headers: {
'Content-Type': 'application/json',
'Authorization': localStorage.getItem('token')
}
};
しかし、今私が大量のコントローラを持っているとき、私はそれについて何かする必要があることを認識しました。私はinterceptors
について聞いたことがあり、それらを取得しようとしています。
/login
のようなページやリクエストがあり、トークンが全くないはずであるため、すべてのリクエストにトークンを入れることはできません。とAuthorization header
とhtmlファイルを取得する何とか私に例外を与えています。
angular.module('App')
.factory('sessionInjector',['$injector', function ($injector) {
var sessionInjector = {
request: function (config) {
if (config.url == "/one" || config.url == "/two"){
config.headers['Content-Type'] = 'application/json;charset=utf-8;';
config.headers['Authorization'] = localStorage.getItem('token');
} else {
config.headers['Content-Type'] = 'application/json;charset=utf-8;';
}
return config;
},
response: function(response) {
if (response.status === 401) {
var stateService = $injector.get('$state');
stateService.go('login');
}
return response || $q.when(response);
}
};
return sessionInjector;
}]);
をしかし、それは/one/{one_id}
のような要求では動作しませんし、私はすべての可能性をハードコーディングすることはできません。だから私はそのような要求を分割しようとしました。だから、これのベストプラクティスは何ですか?
はこちらのベストプラクティスに入っていない、しかし、あなたは簡単に 'よりも柔軟マッチャーを使用することができますconfig.url == "/ one"。例えば、あなたが 'config.url.indexOf( '/ one')=== 0'またはregexを使ってurl *が"/one "で始まるかどうかを調べることができます。また、許可されていないルートより多くのルートがある場合は、 'if(config.url!== '/ login')'のようにチェックを逆にすることができます。 – noppa