web-dev-qa-db-ja.com

angularjsのこのHTTP GETにHTTP基本認証を追加します

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です。これをどのように行うことができますか?

9
user781486

基本認証では、ユーザー名とパスワードは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) {
22
user5698801

ライブラリを使用してベース64で認証をエンコードするのではなく、次のように使用できます。

window.btoa("user:pass")

ほとんどのブラウザでサポートされています。

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

14
ryan.wise