在我的角应用程序中,我有一个名为' authInterceptor'的$ http请求拦截器。我这样创作:
.factory('authInterceptor', function ($q, $window, EXT_API_BASE, $injector) {
return {
request: function (config) {
if (config.url.indexOf(EXT_API_BASE) !== -1){
var Auth = $injector.get('Auth');
if(Auth.user && Auth.user.token){
config.headers.Authorization = 'Web ' + Auth.user.token;
}
}
return config;
}
}});
它在.config()中注册:
$httpProvider.interceptors.push('authInterceptor');
如您所见,我的Authorization标头绑定到Auth.user.token值。我的用户登录后可以使用此值。
然后发送标题用于对我的api的任何调用。
我面临的问题是......当用户在我的角度应用程序中注销时,即使我已经删除了Auth.user.token,仍然会发送Authorization标头。
在页面的硬刷新时,授权标题会被完全删除。
我如何确保' authInterceptor'我的用户退出时注册令牌值的变化?
答案 0 :(得分:0)
回答我自己的问题。在叹息时改变了Auth.user对象的新手错误:
Auth.user = {}
创建了一个新对象,而requestInterceptor仍然引用了旧对象。
正确的做法是:
delete Auth.user.token