2014-09-30 139 views
0

在我的角度应用程序,我有一个名为“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'); 

如您所见,我的授权标头绑定到Auth.user.token值。当我的用户登录时,此值可用。

然后发送标头以调用我的api。

我面临的问题是...当用户在我的角度应用程序中注销时,即使我已经删除了Auth.user.token,授权标头仍然正在发送。

在页面的硬刷新上,授权标头然后完全删除。

如何确保'authInterceptor'在用户注销时注册令牌值的更改?

回答

0

回答我自己的问题。在制造出的叹息改变Auth.user对象这样的新手错误:

Auth.user = {} 

创建一个新的对象和requestInterceptor仍然引用旧的对象。

做正确的方法是:

delete Auth.user.token