创建身份验证以检查用户是否已登录

时间:2017-10-17 09:13:03

标签: javascript angularjs

我有一个与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);
});

请不要告诉我谷歌,因为我已经有这么多的蓝色链接。如果你知道任何事情,请纠正我,如果你有任何工作实例分享它。

1 个答案:

答案 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;
}); 
相关问题