如何使用angular.js进行基本的http授权?

时间:2014-05-15 09:31:07

标签: javascript angularjs http-authentication

我的后端结构类似于this文章。

所以我想用angular.js发送GET请求,类似于curl的做法,通过http头授权:

$ curl -u miguel:python -i -X GET http://127.0.0.1:5000/api/token
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 139
Server: Werkzeug/0.9.4 Python/2.7.3
Date: Thu, 28 Nov 2013 20:04:15 GMT

{
  "token": "eyJhbGciOiJIUzI1NiIsImV4cCI6MTM4NTY2OTY1NSwiaWF0IjoxMzg1NjY5MDU1fQ.eyJpZCI6MX0.XbOEFJkhjHJ5uRINh2JA1BPzXjSohKYDRT472wGOvjc"
}

更新

This不重复,答案没有描述如何在http标头中一起发送用户名和密码,最后的评论也说明解决方案根本不起作用。请注意甚至不是从我的问题或该问题可以了解随机用户如何发送用户名:密码通过http标题..没有人告诉任何有关base64但是...?:)

更新2

完整而正常的答案是:

$http.get(config.apiUrl + '/api/token', { headers: {'Authorization': 'Basic '+ base64.encode( $scope.username + ':' + $scope.password) } })

更新3

这并不容易,因为我认为在.get()中传递这个字典不会解决任何问题。我发现这个答案很有帮助:How do I get basic auth working in angularjs?

2 个答案:

答案 0 :(得分:2)

要向服务器发送GET请求,您可以使用$http服务,并设置标题:

$http.defaults.headers.get = {'X-Access-Token':token};

 $http.get('/api',{params:{}})
      .success(function(response){
         //success
      }).error(function(){
         //error
      });

答案 1 :(得分:1)

Http URI允许您传递用户和密码。 试试这个:

http://miguel:python@127.0.0.1:5000/api/token