У меня возникла проблема с моим текущим назначением: выйти из системы, если пользователь бездействует (никаких действий не выполняется) в течение 15 минут
Я использую tokens.expires
date и знаю некоторые функции AngularJs Idle
, но я не могу использовать их там должным образом, потому что уже есть один работающий сервис, который запускается при запуске проекта и каждую минуту проверяет, произошла ли ошибка (до * 1005) *) и если refreshToken
необходимо (будет продлено)
Я думал о решении сделать сервис с $watch
и отслеживать действия пользовательского интерфейса. При каждом пользовательском интерфейсе действие будет возобновлено с текущим token.expires
временем и сохранится в localStorage
В случае, если не было выполнено никаких действий, даже если токен все еще действителен, через 15 минут пользователь выйдет из системы
Я написал этот код
(function (angular, moment) {
'use strict';
angular
.module('app')
.factory('actionClickService', actionClickService);
actionClickService.$inject = [
'authenticationService',
'$rootScope'
];
function actionClickService(authenticationService, $rootScope) {
var actionClick = {
endsAt: ''
};
var KEY = {
TOKENS: 'tokens',
USER: 'user',
ACTION_CLICK: 'actionClick'
};
$rootScope.$watch($window, function () {
if (authenticationService.isAuthenticated() && authenticationService.getUser()) {
var tokens = JSON.parse($window.localStorage.getItem(KEY.TOKENS));
var getActionClick = JSON.parse($window.localStorage.getItem(KEY.ACTION_CLICK));
if (!getActionClick) {
actionClick.endsAt = tokens.expires;
$window.localStorage.setItem(KEY.ACTION_CLICK, JSON.stringify(actionClick));
} else if (moment() - moment(getActionClick.endsAt) > 0) {
authenticationService.logout();
} else {
actionClick.endsAt = token.expires;
$window.localStorage.setItem(KEY.ACTION_CLICK, JSON.stringify(actionClick));
}
}
}
);
}
})(window.angular, window.moment);
Сначала мой сервис вообще не был обнаружен
После ввода этой службы в tokenRefreshService
(для refreshToken
) моя служба начинает обнаруживаться, но происходит сбой $window
Может быть, я двигаюсь не в том направлении. Буду признателен за вашу помощь