【发布时间】:2016-04-04 14:34:29
【问题描述】:
我有一个带有 node/express 后端的 Angular 应用程序。我尝试使用 httpProvider 实现身份验证拦截器。当本地存储中存储有令牌时,应用程序按预期工作并且我能够从后端检索受限数据,但是一旦我通过注销删除令牌并尝试重定向到主视图,我就会收到 TypeError : 无法读取未定义的属性“标题”。如果我注释掉配置中的代码行,我已经注册了拦截器,错误就消失了。由于某些我无法诊断的原因,除非本地存储中有令牌,否则应用程序会崩溃。
身份验证拦截器:
angular.module('barmehealth')
.factory('authInterceptor', function(authToken) {
return {
request: function(config) {
var token = authToken.getToken();
if (token) {
config.headers.Authorization = 'Bearer ' + token;
return config;
}
},
response: function(response) {
return response;
}
};
});
在Config对象中注册:
$httpProvider.interceptors.push('authInterceptor');
我尝试通过如下更改代码来解决问题:
.factory('authInterceptor', function(authToken) {
return {
request: function(config) {
var currentToken = authToken.getToken();
var token = currentToken ? currentToken : null;
if (token) {
config.headers.Authorization = 'Bearer ' + token;
return config;
}
},
response: function(response) {
return response;
}
};
});
【问题讨论】:
标签: angularjs