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,因此应该可以使用。如何调用它?:|