在我的应用内部,身份验证正在使用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设置默认头?
答案 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,那就是使用自定义"登录"方法,这应该工作。