Javascript 如何使用http身份验证传递凭据?

Javascript 如何使用http身份验证传递凭据?,javascript,authentication,angularjs,Javascript,Authentication,Angularjs,在我的应用程序中,身份验证正在使用 当用户填写用户名/密码表单并提交时,其目标是来自控制器的login()函数: $scope.login = function() { var credentials = Base64.encode($scope.username + ':' + $scope.password); $http.defaults.headers.common['Authorization'] = 'Basic ' + credentials; User.

在我的应用程序中,身份验证正在使用

当用户填写用户名/密码表单并提交时,其目标是来自控制器的
login()
函数:

$scope.login = function() {
    var credentials = Base64.encode($scope.username + ':' + $scope.password);
    $http.defaults.headers.common['Authorization'] = 'Basic ' + credentials;

    User.login(                           // reference to the $resource service
        function() {                      // success callback
            authService.loginConfirmed(); // method of angular-http-auth
        }
    );

}
用户是使用$resource创建的服务

factory('User', function($resource){
    return $resource('url/to/json', 
        {}, 
        {   'login': { method: 'GET', isArray:true }
        });
})
base64是一种加密服务,来自


这是这样工作的,但是有没有办法通过http auth传递凭据,而不是通过$http设置默认头

这样做的问题是:

$http.defaults.headers.common['Authorization'] = 'Basic ' + credentials;
您现在正在为所有发出的$http请求设置“凭据”。如果您不想这样做,并且希望在每次$resource调用中直接传递“凭据”,那么您可以这样做,这看起来就像您在那里开始做的一样

return $resource('url/to/json', 
    {}, 
    {   'login': {
             method: 'GET',
             headers: { 'Authorization': 'Basic ' + credentials }
         }
    });
我没有尝试过这个例子,但我有类似的代码,其中方法是POST,所以我在返回$resource的结果之前调用save(),而“login”键是“save”


但是,由于您正在使用自定义的“登录”方法执行GET,因此应该可以使用。

如何调用它?:|