在我的webapp中,当未登录用户请求主页面时,我会显示一个登录页面(仅包含登录表单)。然后用户输入其userid和pwd,AngularJS控制器向 / connection 发出HTTP POST请求,如果接受凭证,则返回JWT autentification令牌。
然后我希望AngularJS控制器在标题中发出/传递令牌,以便下一个加载的页面是连接用户可以开始使用的主要webapp页面。
如何使用AngularJS实现这一目标。我应该使用$document.location.href
吗?如果是,如何将令牌设置到HTTP头中?
由于
答案 0 :(得分:0)
你可以用两种方式做到:
1 - 对所有已发起的请求使用自定义标题(无关紧要,发布等等),在这里,我们的朋友发布了许多不同的方法。
AngularJS $http custom header for all requests
2 - 覆盖请求的标头,如下所示:
$http.get(/*The Call URL*/'http://myawesomeurl/jsondata',/*Configuration Object*/
{/*Overriding the header of the request*/
headers: {
'Content-Type': 'application/json',//request content type
'Authorization': 'token d2VudHdvcnRobWFuOkNoYW5nZV9tZQ=='//Token parameter
//,'myAwesomeHeaderParam':'the header is all yours, add or remove anything'
}
})
.success(function (data, status, headers, config) {
console.log(data);//Received data
})
.error(function (data, status, headers, config) {
console.log('Error Status:'+status);
console.log(data);//Any Server Response values in the case of error
});
//Another Way for initiating the request just for your info
/* var reqInfo = {
method: 'GET',//POST, PUT
url: 'http://myawesomeurl/jsondata',
headers: {
'Content-Type': 'application/json',//request content type (can be not used)
'Authorization': 'token d2VudHdvcnRobWFuOkNoYW5nZV9tZQ=='//Token parameter
}
//,data:{'myAwesomeParameter':'in case of post or put, etc..'} //Request body
};
$http(reqInfo).success(....*/
您可以了解有关Configuration Object here
的更多信息