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');
};
}
}
})();
을 구현하고있어 당신이보고 중지 대기의 주시 해제 방법을 사용할 수 있습니다
Idle.unwatch()를 사용했습니다. 로그 아웃 기능에 있지만 작동하지 않습니다. –
코드 –
위를 볼 수 있습니다. 위의 전체 App.js 및 컨트롤러 코드를 업데이트했습니다. –