guagay_wk
guagay_wk

Reputation: 28030

Add HTTP basic authentication to this HTTP GET in angularjs

I have an existing angularjs code which makes a HTTP GET. Extracted below is some relevant code inside the controller.

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

I would like to add HTTP basic authentication to the HTTP GET. The username is foo and the password is bar. How can this be done?

Upvotes: 9

Views: 37528

Answers (2)

ryan.wise
ryan.wise

Reputation: 469

Rather than using a library to encode your auth by base 64, you could just use:

window.btoa("user:pass")

it's supported by most browsers.

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

Upvotes: 16

user5698801
user5698801

Reputation: 574

Because in basic authentication, the username and password are decode by base64. You need to find a library to do this work for comfortable first.

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

After that, load base64 into your app and config headers.

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

You can also provide the authentication header to get function seprately if you like.

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

Upvotes: 23

Related Questions