Как предотвратить вызов услуги при нажатии кнопки обновления

У меня проблема в угловых. Я сделал сервис, который должен аутентифицировать пользователя, что сервис имеет две переменные, которые var isAuth а также var IsAdmin;что указывает на состояние пользователя.

В контроллере входа в систему я устанавливаю значение этих переменных в зависимости от состояния запроса, то у меня есть $locationChangeStartсобытие, которое я ввел в него службу, чтобы я мог получить доступ к обоим isAuthа также IsAdmin чтобы определить, может ли пользователь получить доступ к этому маршруту или нет, до сих пор все работает нормально.

Проблема в том, что когда я нажимаю кнопку обновления, сервисы снова вызываются без, конечно, контроллера входа в систему, поэтому оба isAuth а также IsAdminстать неопределенным любая идея, что я должен сделать, чтобы предотвратить это.

Вот код сервиса.

 app.factory('authService', ['api','$cookieStore', function(api, $cookieStore){

     var AuthentoctionControllerUrl = "http://localhost:18678/api/Authentication/";  
     var isAuth;
     var IsAdmin;
     function Login(credential){
        return api.Post(AuthentoctionControllerUrl + "ByPassword" ,null , credential);
     };

    var Logout = function() {
         $cookieStore.remove('AuthorizationHeader');
         isAuth = false;
     };

     var AccessPrivilegesAdmin = function(route_type){
         if(this.IsAdmin == true){
             return true;
         }
         else if( route_type=="public"){
             return true;
         }
         else{
            return false;
         }
     };

     var AccessPrivilegesAuth = function(){
         return isAuth;
     };

    return {
        Login  : Login,
        Logout : Logout,
        isAuth : isAuth,
        IsAdmin : IsAdmin,
        AccessPrivilegesAuth : AccessPrivilegesAuth,
        AccessPrivilegesAdmin : AccessPrivilegesAdmin
     };
 }]);

Ее код контроллера.

app.controller('LoginController', ['$scope', '$location', 'authService','$cookieStore', function($scope, $location, authService, $cookieStore){
     $scope.loginData = {
         EmailAddress : "",
         password : ""
     };

     $scope.error; $scope.error_exist = false; 
     $scope.login = function(){
         authService.Login($scope.loginData).success(function(response){
             $cookieStore.put('AuthorizationHeader', response.Token);
             authService.isAuth = true;
             authService.IsAdmin = response.IsAdmin;
             var authData = $cookieStore.get('AuthorizationHeader');
             $location.path('categories');
         }).error(function(Error){
             $scope.error_exist = true;
             switch(Error.ExceptionMessage){
                case "201" :
                     $scope.error = "The emailAddress/password pair don't match an existing member"; break;
                case "210" :
                     $scope.error = "Value cannot be null missing Email Address and/or password."; break;
                case "202" :
                     $scope.error = "The email address you are using isn't confirmed. Please see your inbox for further instructions."; break;
                default : 
                     $scope.error = "Error with the server";
             }
         }); 
     };
 }]);

0 ответов

Другие вопросы по тегам