我有一个与REST API通信的AngularJS应用程序。如果用户未登录,则向我的api发送POST请求并返回{ logged: false, username: undefined, id: undefined }
,否则,它将返回{ logged: true, username: 'admin', id: 123 }
之类的内容。
我希望这些函数以这样的方式实现,即调用一个函数将为所有其余函数设置值。 我得到了回复的回复,但我对检查条件感到很困惑。
这是我尝试过的服务:
app.factory('Authentication', function($http,session){
var service = {};
service.login = function(username,password) {
return $http
.post('http://localhost:3000/loginfo',{
username : username,
password : password
})
.then(
function successCallback(response){
session.create(response.data.id,response.data.username);
return response.data;
});
};
service.isAuthenticated = function() {
return !!session.username;
};
return service;
});
/*-----Main Controller-----*/
app.controller('credientials',['$scope','$route','$http','Authentication',function($scope,$route,$http,Authentication) {
$scope.isAuthenticated = false;
$scope.userCred = {
username: '',
password: ''
}
/*-----Form Submition-----*/
$scope.log = function(userCred){
Authentication.login(userCred.username,userCred.password)
.then(function(result){
console.log(result);
})
.catch(function(err){
console.error(err);
});
请不要告诉我谷歌,因为我已经有这么多的蓝色链接。如果你知道任何事情,请纠正我,如果你有任何工作实例分享它。
答案 0 :(得分:1)
在工厂
中使用承诺服务$q
app.factory('Authentication', function($http,$q,session){
var service = {};
service.login = function(username,password) {
return $q(function(resolve, reject) {
$http
.post('http://localhost:3000/loginfo',{
username : username,
password : password
})
.then(function successCallback(response){
session.create(response.data.id,response.data.username);
resolve(response.data);
}, function(err){
reject(err);
});
});
};
service.isAuthenticated = function() {
return !!session.username;
};
return service;
});