2
從服務器檢測$http
錯誤並在任何調用導致401錯誤時刪除令牌的最簡單方法是什麼?例如,如果會話在用戶未使用應用程序時到期,則當他們返回到Web應用程序時,令牌不再有效。如果我在API調用期間發回401錯誤,我需要注意到這一點,並讓用戶重新登錄。如何刪除API錯誤401上的令牌?
目前,在Chrome開發人員工具中,我可以看到401錯誤,但Satellizer不會刪除令牌(以爲它曾經一次)。
我試圖創建一個httpInterceptor,但收到Circular Dependency error:
apiLogoutInterceptor.$inject = ['$q', '$auth'];
function apiLogoutInterceptor ($q, $auth) {
var service = this;
service.responseError = function (response) {
if (response.status == 401) {
$auth.removeToken();
window.location = '/login';
}
return $q.reject(response);
};
}
configureApiLogout.$inject = ['$httpProvider'];
function configureApiLogout ($httpProvider) {
$httpProvider.interceptors.push('apiLogoutInterceptor');
}
感謝您的鏈接。它幫助我解決了這個問題。我希望在Satellizer中有這樣的「官方」方式。如果我找不到一個,我會編輯我的問題,標題,並從它的工作後接受答案。 –
當您需要可直接訪問$ http或甚至間接訪問$ http的服務時(例如,通過路由中的$ state),這是一個常見問題。您可以使用$ injector服務,也可以注入$ rootscope並廣播一個事件(這也打破了週期)。取決於我們更適合的用例。如果您無法修改您需要撥打的服務,那麼$注入器將成爲您的選擇。 –