我无法在$ resource服务标头中添加承载令牌以进行基于令牌的身份验证。我使用了以下代码
工厂
return $resource(appSettings.serverPath + "/api/product/:id", null, {
'get': {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + currentUser.getProfile().token
}
}
此外,我根据app.run中的一些研究尝试了下面的代码
$http.defaults.headers.common.Authorization = 'Bearer ' + currentUser.getProfile().token;
但是这两个选项都没有在我的请求中添加此标头,我可以在没有此标头的情况下看到Chrome中的请求,因此得到了未经授权的响应。我使用棱角1.5.9。对此有任何线索。
答案 0 :(得分:1)
假设currentUser
是服务而currentUser.getProfile()
是同步API:
app.factory("myRestAPI", function(currentUser) {
return $resource(appSettings.serverPath + "/api/product/:id", null, {
'get': {
method: 'GET',
headers: {
//REPLACE expression
//'Authorization': 'Bearer ' + currentUser.getProfile().token
//WITH a function
'Authorization':
function() {
return 'Bearer ' + currentUser.getProfile().token;
}
}
}
);
});
通过使用函数而不是表达式,将在每次调用时计算Authorization标头。
来自文档: 1
- headers - {Object} - 返回表示要发送到服务器的HTTP头的字符串的字符串或函数的映射。如果函数的返回值为
null
,则不会发送标头。函数接受配置对象作为参数。