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并广播一个事件(这也打破了周期)。取决于我们更适合的用例。如果您无法修改您需要拨打的服务,那么$注入器将成为您的选择。 –