Solución:
Prueba ng-idle. Es un componente simple en el que puede establecer el tiempo de espera y el tiempo de advertencia antes de que se alcance el tiempo de espera. Luego, puede consultar el servidor para el cierre de sesión del usuario o algo similar.
myApp.config(function(IdleProvider, KeepaliveProvider) {
IdleProvider.idle(900); // 15 min
IdleProvider.timeout(60);
KeepaliveProvider.interval(600); // heartbeat every 10 min
KeepaliveProvider.http('/api/heartbeat'); // URL that makes sure session is alive
});
myApp.run(function($rootScope, Idle) {
Idle.watch();
$rootScope.$on('IdleStart', function() { /* Display modal warning or sth */ });
$rootScope.$on('IdleTimeout', function() { /* Logout user */ });
});
En la configuración anterior, cuando el usuario está inactivo durante 900 segundos (no mueve el mouse, no presiona ninguna tecla o botón, etc.), se muestra una advertencia. Luego esperará 60 segundos y cerrará la sesión del usuario (enviar una solicitud a un servidor que posiblemente destruya la sesión del servidor).
Para asegurarse de que la sesión del servidor no expire (incluso si todo lo que el usuario está haciendo es mover el mouse), Keepalive
El servicio enviará una solicitud al servidor cada 10 minutos. Este tiempo tiene que ser menor que el tiempo de expiración de la sesión del servidor.
Consulte la demostración.
A continuación, se muestran algunas implementaciones:
https://github.com/witoldsz/angular-http-auth
https://github.com/angular-app/angular-app/tree/master/client/src/common/security