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 */ });
});
ここコントローラーで、私はあなたが見て停止するアイドルのunwatchメソッドを使用することができますログアウト機能
(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とコントローラコードを更新しました –