我想为我的登录系统创建一个新的REST方法,我在自定义标头中提供用户凭据。我怎样才能使用AngularJS / ng-resource?我尝试过以下代码,但问题是当我尝试从表单($ scope.vm.username)获取用户名/密码时。这给了我“未定义的”#39;如果我在标题设置中这样做。
angular.module('BkSystemApp.controllers', ['ngResource'])
.controller('LoginController', function($scope, $location, $resource){
//init
$scope.vm = {};
function getUserCredentials(){
return ($scope.vm.username + ':' + $scope.vm.password)
}
//resources
var Authentication = $resource('/users/authentication',{},{
login:{
method: 'GET',
isArray: false,
headers: {'Authentication':btoa(getUserCredentials())}
}
});
//HTTP methods
$scope.login = function(){
Authentication.login(function(data){
});
};
})
答案 0 :(得分:0)
要让$resource
.login
方法在方法调用时计算头字符串,标头配置需要一个头属性,其值为函数声明,而不是函数调用。 / p>
//resources
var Authentication = $resource('/users/authentication',{},{
login:{
method: 'GET',
isArray: false,
//USE function declaration
headers: {
'Authentication':
function () {
return btoa(getUserCredentials())
}
}
//NOT function invocation
//headers: {'Authentication':btoa(getUserCredentials())}
}
});
这样,每次调用Authentication
方法时都会计算login
值。
注意:在XHR GET请求的标头中发送用户名和密码是不明智的。