我正在用这个敲打墙 – 我对使用API相对较新,并且尚未做任何需要身份验证的事情.
我一直在向API发送POST请求.创建内容的端点是:
/entity/node
如果我发送以下内容,我可以发送成功的POST请求:
headers: { "Authorization": "Basic YWRtaW46MTIzcXdl",//admin:123qwe },
我遇到的问题是授权.我在这里指定Basic,然后是编码字符串,这是我的管理员登录.因此,当硬编码时,我可以发布.
我的问题 – 当用户正确登录时,我需要设置标题,以便将来所有的帖子请求都能正常工作.我怎么能在AngularJS中做到这一点?
"Authorization": "Basic " + auth,
其中auth是base64编码的用户:pass,但这不起作用.我的想法是,每当发出POST请求时,需要将此值存储在某处以便检索.但是怎么样?
一旦有了令牌,请调用此方法:
原文链接:https://www.f2er.com/angularjs/141577.html$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注入您的app配置并调用authService.configure()