使用AngularJS和JWT登录流程

时间:2017-01-11 22:42:37

标签: angularjs http-headers jwt

在我的webapp中,当未登录用户请求主页面时,我会显示一个登录页面(仅包含登录表单)。然后用户输入其userid和pwd,AngularJS控制器向 / connection 发出HTTP POST请求,如果接受凭证,则返回JWT autentification令牌。

然后我希望AngularJS控制器在标题中发出/传递令牌,以便下一个加载的页面是连接用户可以开始使用的主要webapp页面。

如何使用AngularJS实现这一目标。我应该使用$document.location.href吗?如果是,如何将令牌设置到HTTP头中?

由于

1 个答案:

答案 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

的更多信息