2015-07-11 35 views
0

我有一个身份验证代码,当我得到一个成功的消息,因为在200响应状态,那么它的罚款,但如果我得到401该页面应该显示错误,因为我已经设置了一些错误状态,但这不会发生,我也看到视图刷新并变成空白。请帮助

app.controller('MyController', ['$scope', '$location', '$http','$rootScope','$route','$localStorage', function ($scope, $location, $http, $rootScope,$route, $localStorage) { 
    $scope.username = ""; 
    $scope.password = ""; 
    $scope.ipsenData = {}; 
    $scope.username=""; 
    $scope.password=""; 
    $scope.invalidUser=""; 

    /*Functionalities of the Application*/ 
    $scope.login = function() { 
     $http.post('/ipsen/login', { 
      username: $scope.username, 
      password: $scope.password 
     }). 
     success(function (data, status, headers, config) { 
      if(status===200){ 
       console.log("Login Successful"); 
       $http.get('/ipsen/getrole?userName='+$scope.username) 
       .success(function (data, status, headers, config) { 
        if(data.rows[0].RoleName==="Ipsen Manager"){ 
         var data = data.rows[0]; 
         /*Username and Role Storage*/ 
         $localStorage.username=$scope.username; 
         $localStorage.FirstName=data.FirstName; 
         $localStorage.LastName=data.LastName; 
         $localStorage.OrganizationName=data.OrganizationName; 
         $localStorage.RoleName=data.RoleName; 
         $localStorage.Email=data.Email; 


         $location.path('/customers').replace(); 
        } 
        else{ 
         var data = data.rows[0]; 
         /*Username and Role Storage*/ 
         $localStorage.FirstName=data.FirstName; 
         $localStorage.LastName=data.LastName; 
         $localStorage.OrganizationName=data.OrganizationName; 
         $localStorage.RoleName=data.RoleName; 
         $localStorage.Email=data.Email; 
         $location.path('/furnacelist/'+$scope.username+"/"+"customer").replace(); 
        } 
        /**/ 
       }) 
       .error(function (data, status, headers, config) { 
        console.log(data); 
       }); 
      } 
     }). 
     error(function (data, status, headers, config) { 
      if(status === 401){ 
       $scope.invalidUser="Please Enter Valid Username & Password"; 
      } 
     }); 
    }; 
}]); 
+0

最初页面有一个视图,您可以在其中查看登录表单和全部。点击登录后,视图一起改变。 –

+1

它看起来像你需要设置一个拦截器来处理这个。请参阅[Angular docs](https://docs.angularjs.org/api/ng/service/$http#interceptors),[Lukas Ruebbelke]的文章(http://onehungrymind.com/winning-http-拦截器 - angularjs /)是有用的。 –

回答

0

可以设置一个像下面,这可能有助于使一个401用户将简单地停留在登录页上的拦截器。

function APIInterceptor($rootScope, $q) { 
    var service = this; 
    service.responseError = function(response) { 
     console.log("in responseError", response); // just to see the error initially 
     if (response.status === 401) { 
     $rootScope.$broadcast('unauthorized'); 
     return $q.reject(response); 
     } 

     return response; 
    }; 
    } 

然后,您将拦截器放入处理路由的配置文件中。

$httpProvider.interceptors.push('APIInterceptor'); 

随着内.run使用rootScope.$on下面的代码。

$rootScope.$on('unauthorized', function() { 
     // ... some code to handle tokens, cookies, whatever ... set to null 
     $location.path('/login'); 
    }); 

我还遗漏了其他一些位,但我认为你明白了。基本上,你想在那里添加一个拦截器来处理你的请求和响应。

相关问题