2017-03-24 1 views
0

Idle.watch() 및 KeepaliveProvider를 사용하여 세션을 확인하고 로그 아웃하려고합니다. 그러나 로그 아웃 한 후 Idle.watch()가 다시 작동하고 로그 아웃 한 후에 작동하지 않아야하는 세션 시간 초과를 확인합니다. 여기 AngularJS에서 로그 아웃 한 후 Idle.watch()를 중지하는 방법은 무엇입니까?

내 코드

App.js 다음 컨트롤러에서

angular.module('MetricsPortal', [ 
    'ngAnimate', 
    'ui.bootstrap', 
    'ui.sortable', 
    'ui.router', 
    'ngTouch', 
    'toastr', 
    'smart-table', 
    "xeditable", 
    'ui.slimscroll', 
    'ngJsTree', 
    'ngCookies', 
    'ngStorage', 
    'ngRoute', 
    'ngIdle', 
    'angular-progress-button-styles', 
    'angularUtils.directives.dirPagination', 
    'MetricsPortal.theme', 
    'MetricsPortal.pages', 
    'MetricsPortal.LifeCycle', 
    'MetricsPortal.QBot' 
]) 
.config(function(IdleProvider, KeepaliveProvider) { 
    IdleProvider.idle(5); // 15 min 
    IdleProvider.timeout(10); 
    KeepaliveProvider.interval(10); // heartbeat every 10 min 
// KeepaliveProvider.http('/api/heartbeat'); // URL that makes sure session is alive 
}) 
.run(function($rootScope, Idle,$sessionStorage,$location,$route) { 

    Idle.watch(); 
    $rootScope.$on('IdleStart', function() {/* Display modal warning or sth */ }); 
    $rootScope.$on('IdleTimeout', function() { $rootScope.logout1(); 

    /* Logout user */ }); 



}); 

내가 로그 아웃 기능

(function() { 
    'use strict'; 

angular.module('MetricsPortal.pages.login').controller(
      'LoginCtrl', LoginCtrl); 
/** @ngInject */ 
function LoginCtrl(Idle,$scope, $rootScope, $window, $location,$http,$state, loginService,$cookies,$sessionStorage,$route,toastr,$timeout) { 

    $rootScope.loggedIn = false; 
    $rootScope.registration = false; 
    $rootScope.registereduser = false; 
    $rootScope.changeMenu = false; 
    $scope.menubar = true; 
    $scope.started = false; 

    $scope.changeState = function() { 
      $rootScope.registration = true; 
      $state.go('register'); 

     } 

    $rootScope.logout1= function() { 

     if($rootScope.loggedIn){ 

      $scope.logout(); 

      $scope.started = false; 
     } 

    } 

    $scope.logout=function(){ 

     location.reload(); 

     delete $sessionStorage.user; 
     delete $sessionStorage.loggedIn; 
     delete $sessionStorage.loggedInuserId; 
     delete $sessionStorage.role; 
     delete $scope.password; 
     delete $sessionStorage.lifeCycle; 
     delete $sessionStorage.operational; 
     delete $sessionStorage.qbot; 
     delete $sessionStorage.admin; 

     Idle.unwatch(); 
     $location.path('/'); 
     $rootScope.loggedIn = false; 

    } 

    $scope.home=function(){ 
    if($location.path().split('/').pop() == "dashboard" || 
     $location.path().split('/').pop() == "requirements" || 
     $location.path().split('/').pop() == "testcases" || 
     $location.path().split('/').pop() == "functionalCoverageData" || 
     $location.path().split('/').pop() == "testexecution" || 
     $location.path().split('/').pop() == "defects") { 

     $state.go('dashboard'); 
     $scope.menubar = true; 
     $scope.var1=true; 
     $scope.var2=false; 
     $scope.var3=false; 
    } 

    else if($location.path().split('/').pop() == "lifecycle" || 
       $location.path().split('/').pop() == "codeRepo" || 
       $location.path().split('/').pop() == "codeanalysis" || 
       $location.path().split('/').pop() == "build") { 

       $state.go('lifecycle'); 
       $scope.menubar = false; 
       $scope.var1=false; 
       $scope.var2=true; 
       $scope.var3=false; 
     } 
    else { 

      $state.go('qbot'); 
      $scope.menubar = false; 
       $scope.var1=false; 
       $scope.var2=true; 
       $scope.var3=false; 
    } 
    } 

    $scope.hideSideBar=function(){ 

     $scope.menubar = false; 

    } 
    $scope.gotoHome=function(){ 
     $window.localStorage.clear(); 
     $rootScope.loggedIn = false; 
     $rootScope.registereduser = false; 
     $rootScope.registration = false; 
    } 


    $scope.SessionData=function(){ 
     $rootScope.loggedInuserId=$sessionStorage.loggedInuserId; 
     $rootScope.role=$sessionStorage.role; 
     $rootScope.operational=$sessionStorage.operational; 
     $rootScope.lifeCycle=$sessionStorage.lifeCycle; 
     $rootScope.qbot=$sessionStorage.qbot; 

     if($sessionStorage.loggedIn){ 

      $rootScope= $sessionStorage.user; 
      $scope.loggedIn=$sessionStorage.loggedIn;    
       $scope.var1=true; 
      } 
    } 

     $scope.showGroup = function(userName, password) { 
     $scope.userId = userName; 
     $scope.password = password; 
     if((userName==null || userName=='')&& (password==null || password=='')) { 
      $scope.showErrorMsg(); 
      $rootScope.loggedIn = false; 
     }else 

     $http.post("./rest/jsonServices/authentication?userId="+$scope.userId +"&password="+$scope.password).success(function(data) { 
      var landingPage = ''; 
      $scope.inValidCredentials = false; 
      $rootScope.role = data.role; 

      if(data!=null && data.accessible == true){ 

       $sessionStorage.user = JSON.stringify(data);    
       $sessionStorage.loggedIn = true; 
       $rootScope.started=true; 

       $sessionStorage.role=data.role; 
       $sessionStorage.loggedInuserId = userName; 
       $sessionStorage.operational=data.operational; 
       $sessionStorage.lifeCycle=data.lifeCycle; 
       $sessionStorage.qbot=data.qbot; 
       $sessionStorage.admin=data.admin; 


       $rootScope.loggedIn = true; 
       $rootScope.role=$sessionStorage.role; 
       $rootScope.loggedInuserId=$sessionStorage.loggedInuserId; 
       $rootScope.menuType=data.defaultMenuType; 


       $rootScope.operational=$sessionStorage.operational; 
       $rootScope.lifeCycle=$sessionStorage.lifeCycle; 
       $rootScope.qbot=$sessionStorage.qbot; 
       $rootScope.admin=$sessionStorage.admin; 

       if($rootScope.admin){ 
         $state.go('admin'); 
         $scope.menubar = false; 
        } 
       else if($rootScope.operational){ 
        $state.go('dashboard'); 
        $scope.var1=true; 
       }else if ($scope.lifeCycle){ 
        $state.go('lifecycle'); 
        $scope.menubar = false; 
       }else if ($rootScope.qbot){ 
        $scope.menubar = false; 
        $state.go('qbot') 
       } 

      }else if(data!=null && data.accessible == false){ 
       $rootScope.registereduser = true; 
       $rootScope.loggedIn = false; 

      } 

      else{ 
       alert("Invalid Credentials"); 
       data.message="Invalid UserID or Password"; 
       $scope.error=data.message; 
      } 

     }).error(function(data){ 

      $scope.showErrorMsg(); 

     }); 

      $scope.updateSideBar=function(role,menuType){ 

          /*$http.get("./rest/jsonServices/getMenuItems?role="+role+"&menuType="+menuType).success(function (response) { 
           $rootScope.menus=response;      
           $scope.childmethod(response); 


           }) ;  
          */ 

          if(menuType == "qbot"){ 
          $scope.menubar = false; 
          $scope.var1=false; 
          $scope.var2=false; 
          $scope.var3=true; 
          } 
          else if(menuType=="lifecycle") 
           { 
          $scope.menubar = false; 
          $scope.var1=false; 
          $scope.var2=true; 
          $scope.var3=false; 
           } 
          else{ 
          $scope.menubar = true; 
          $scope.var1=true; 
          $scope.var2=false; 
          $scope.var3=false; 
          } 

      }; 
     /* $scope.childmethod = function(response) { 

      $rootScope.$emit("CallParentMethod", response); 
      };*/ 


      $scope.showErrorMsg = function() { 
       toastr.error("UserId and Password didn't match.Please Enter Valid Credentials", 'Error'); 
      }; 

} 



} 


})(); 
을 구현하고있어 당신이보고 중지 대기의 주시 해제 방법을 사용할 수 있습니다

답변

0

그것. 사용법은 Idle.unwatch();입니다. 로그 아웃 기능에 추가하십시오. 유휴 unwatch 기능 확인 here

+0

Idle.unwatch()를 사용했습니다. 로그 아웃 기능에 있지만 작동하지 않습니다. –

+0

코드 –

+0

위를 볼 수 있습니다. 위의 전체 App.js 및 컨트롤러 코드를 업데이트했습니다. –

관련 문제