如何使用angular-http-auth传递凭据?

时间:2013-09-20 15:16:23

标签: javascript authentication angularjs

在我的应用内部,身份验证正在使用angular-http-auth

当用户填写用户名/密码表单并提交时,它会从控制器中定位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是来自here

的加密服务

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

1 个答案:

答案 0 :(得分:1)

这样做的问题:

$http.defaults.headers.common['Authorization'] = 'Basic ' + credentials;

您现在正在设置"凭据"对于所有$ http请求。如果您不想这样做,并且您希望传递"凭据"对于每个$资源直接调用,你可以,这就是你开始在那里做的。

return $resource('url/to/json', 
    {}, 
    {   'login': {
             method: 'GET',
             headers: { 'Authorization': 'Basic ' + credentials }
         }
    });

我没有试过这个例子,但我有类似的代码,其中方法是POST,所以我在返回它之前在$ resource的结果上调用save(),并且' login&# 39;密钥是'保存'

但是,既然你正在进行GET,那就是使用自定义"登录"方法,这应该工作。