Angularjs会话在固定时间后自动注销用户

时间:2015-09-11 15:57:16

标签: angularjs session

我在angularjs建立了一个网站。 现在我需要确保如果用户在执行LOGIN超过10分钟后没有使用过网站,则应该自动注销。此外,应清除与网站关联的本地存储。 我还需要避免URL重写。 我是angularjs的新手。 我听说会议必须完成这些目标。 我需要一个很好的建议以及获得参考的链接。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在.config运行后在app.js中声明此代码,10分钟后它将重定向到登录页面

var d = new Date();
var n = d.getTime();  //n in ms

$rootScope.idleEndTime = n+(10*60*1000); //set end time to 10 min from now
//console.log(idletime);
$document.find('body').on('mousemove keydown DOMMouseScroll mousewheel mousedown touchstart', checkAndResetIdle); //monitor events

function checkAndResetIdle() //user did something
{
    var d = new Date();
    var n = d.getTime();  //n in ms

    if (n>$rootScope.idleEndTime)
    {
         $document.find('body').off('mousemove keydown DOMMouseScroll mousewheel mousedown touchstart'); //un-monitor events

         //$location.search('IntendedURL',$location.absUrl()).path('/login'); //terminate by sending to login page

         alert('Session ended due to inactivity');
         $location.path("/login");
         //console.log($location.path());
                       $rootScope.$apply();
    }
    else
    {
         $rootScope.idleEndTime = n+(10*60*1000); //reset end time
    }
}

答案 2 :(得分:0)

您还可以使用angular-activity-monitor完成。

  

[ActivityMonitor]是一个简单的服务,它将根据用户的DOM活动发出几个事件。它还允许您在后台“保持项目存活”,只要用户被视为“活动”。

angular.module('myModule', ['ActivityMonitor']);

MyController.$inject = ['ActivityMonitor'];
function MyController(ActivityMonitor) {
  // how long (in seconds) until user is considered inactive
  ActivityMonitor.options.inactive = 900; 

  // What to do once user is considered inactive
  ActivityMonitor.on('inactive', function() {
    alert("You're inactive");
  });
}