我对此感到很头疼——我对 API 的使用还比较陌生,还没有做过任何需要身份验证的事情。
我一直坚持向 API 发送 POST 请求。创建内容片段的端点是:
/entity/node
如果我发送以下内容,我可以发送成功的 POST 请求:
headers: {
"Authorization": "Basic YWRtaW46MTIzcXdl", //admin:123qwe
},
我遇到的问题是授权。我在此处指定“Basic”,然后指定一个编码字符串,这是我的管理员登录名。所以当硬编码时,我可以发布。
我的问题 - 当用户正确登录时,我需要设置标头,以便所有未来的发布请求都可以工作。我怎样才能在 AngularJS 中做到这一点?
我尝试过传递动态生成的代码:
"Authorization": "Basic " + auth,
where auth是一个base64编码的user:pass,但这不起作用。我的想法是,这个值需要存储在某个地方,以便在发出 POST 请求时进行检索。但如何呢?
一旦您拥有令牌,请调用此方法:
$httpProvider.defaults.transformRequest.push(function (data, headersGetter) {
if (authToken !== null) {
var headers = headersGetter();
angular.extend(headers, 'Authorization: basic ' + authToken);
}
return data;
});
编辑:
没有测试过,但应该是这样的:
myApp.provider('authService', function() {
var authToken = null;
this.$get = ['$httpProvider', function($httpProvider) {
return {
configure: configure,
setAuthToken: setAuthToken
}
};
function configure() {
$httpProvider.defaults.transformRequest.push(function (data, headersGetter) {
if (authToken !== null) {
var headers = headersGetter();
angular.extend(headers, 'Authorization: basic ' + authToken);
}
return data;
});
}
function setAuthToken(token) {
authToken = token;
}
});
然后注入authService
到您的应用程序配置并调用authService.configure()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)