在我的应用程序中,身份验证使用的是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设置默认的头部呢?
发布于 2014-03-31 05:20:33
这样做的问题是:
$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’。
但是,由于您正在使用自定义的"login“方法执行GET,因此这应该是可行的。
https://stackoverflow.com/questions/18920255
复制相似问题