【问题标题】:Add HTTP basic authentication to this HTTP GET in angularjs在 angularjs 中向这个 HTTP GET 添加 HTTP 基本身份验证
【发布时间】:2015-12-22 10:32:45
【问题描述】:

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

    .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。如何做到这一点?

【问题讨论】:

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


【解决方案1】:

您可以使用以下代码,而不是使用库以 base 64 对您的身份验证进行编码:

window.btoa("user:pass")

大多数浏览器都支持它。

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

【讨论】:

  • 发布、放置、删除等怎么样?人?
  • @DRaehal 验证请求的方式不依赖于请求的 HTTP 动词。如果目标端点需要基本身份验证,您只需应用该标头,无论是 POST、PUT 等。
【解决方案2】:

因为在基本认证中,用户名和密码是通过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) {

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
相关资源
最近更新 更多