在angularjs中为此HTTP GET添加HTTP基本身份验证

时间:2015-12-22 10:32:45

标签: javascript angularjs http http-get http-basic-authentication

我有一个现有的angularjs代码,可以生成HTTP GET。下面提取的是控制器内的一些相关代码。

    .controller('imptViewCtrl', ['$scope', '$http', 
        function ($scope, $http, ) {
                    var url = $configuration.webroot + '/impt/list?list=testlist';
                    $http.get(url).then(function (response) {
                               tableData = response.data;
                               });
        }]);

我想将HTTP基本身份验证添加到HTTP GET。用户名为foo,密码为bar。怎么办呢?

2 个答案:

答案 0 :(得分:22)

因为在基本身份验证中,用户名和密码是由base64解码的。您需要先找一个图书馆来完成这项工作。

https://github.com/ninjatronic/angular-base64

之后,将base64加载到您的应用和配置标题中。

angular
    .module('myApp', ['base64'])
    .config(function($httpProvider, $base64) {
        var auth = $base64.encode("foo:bar");
        $httpProvider.defaults.headers.common['Authorization'] = 'Basic ' + auth;
    })

如果您愿意,也可以分别为get功能提供身份验证标题。

var auth = $base64.encode("foo:bar"), 
    headers = {"Authorization": "Basic " + auth};
$http.get(url, {headers: headers}).then(function (response) {

答案 1 :(得分:14)

您可以使用:

,而不是使用库来编写基础64的auth

scala> val opt = Some("a") opt: Some[String] = Some(a) scala> val nope = None nope: None.type = None scala> val seq = Seq("a", "b", "c") seq: Seq[String] = List(a, b, c) scala> seq ++ opt res3: Seq[String] = List(a, b, c, a) scala> seq ++ nope res4: Seq[String] = List(a, b, c)

大多数浏览器都支持它。

https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa