Auto logout with Angularjs based on idle user

前端 未结 10 690
面向向阳花
面向向阳花 2020-11-30 18:07

Is it possible to determine if a user is inactive and automatically log them out after say 10 minutes of inactivity using angularjs?

I was trying to avoid using jQue

10条回答
  •  一向
    一向 (楼主)
    2020-11-30 18:34

    I wrote a module called Ng-Idle that may be useful to you in this situation. Here is the page which contains instructions and a demo.

    Basically, it has a service that starts a timer for your idle duration that can be disrupted by user activity (events, such as clicking, scrolling, typing). You can also manually interrupt the timeout by calling a method on the service. If the timeout is not disrupted, then it counts down a warning where you could alert the user they are going to be logged out. If they do not respond after the warning countdown reaches 0, an event is broadcasted that your application can respond to. In your case, it could issue a request to kill their session and redirect to a login page.

    Additionally, it has a keep-alive service that can ping some URL at an interval. This can be used by your app to keep a user's session alive while they are active. The idle service by default integrates with the keep-alive service, suspending the pinging if they become idle, and resuming it when they return.

    All the info you need to get started is on the site with more details in the wiki. However, here's a snippet of config showing how to sign them out when they time out.

    angular.module('demo', ['ngIdle'])
    // omitted for brevity
    .config(function(IdleProvider, KeepaliveProvider) {
      IdleProvider.idle(10*60); // 10 minutes idle
      IdleProvider.timeout(30); // after 30 seconds idle, time the user out
      KeepaliveProvider.interval(5*60); // 5 minute keep-alive ping
    })
    .run(function($rootScope) {
        $rootScope.$on('IdleTimeout', function() {
            // end their session and redirect to login
        });
    });
    

提交回复
热议问题