这里需要到session功能,可以参考《node.js的session配置以及使用》。
这里主要将实现的思路,这样不管是运用到哪里都是可以的。
1,登录成功后,在登录成功后代码的地方插入以下代码:
req.session.cookie.maxAge = 1000*60*60*24; //设置一下过期时间最好时间久点 req.session.heretime=new Date().getTime(); //获取当前登录这个时刻的微秒数,作为临时值 req.session.name=name; //记录一下账户名
2,制作一个中间件,页面跳转时都能执行到这个中间件以表示用户处在操作的状态下
function public_session(){ //用户不停的浏览页面session保持激活状态 return function(req,res,next){ var oldtime=req.session.heretime; //临时值 var newtime=new Date().getTime(); //当前时间 if(oldtime !== newtime) { //当前值和临时值不一样时 req.session.heretime=newtime; //在帮当前值复制给临时值 } //上面的代码实现效果是记录上一次的操作时间,和此刻的操作时间 //下面代码效果是得到,用户没去做任何操作时的空闲时间 if(!!req.session.name){ if((60000*2)<(newtime-oldtime)){ //2分钟内没任何操作就重新登录 req.session.destroy(); res.redirect(req.originalUrl); } } next(); } } module.exports=public_session;
3,在模块的公共部分加载并调用中间件保证每个页面跳转时就能执行此中间件。
var public_session = require('./routes/public_session'); app.use('/', public_session()); //调用模块,并且作用于整个/根目录
总体的思路:例如我上一次操作时间是8:10,我下次操作是8:30,两个时刻相减,我其中有20分钟的时间没去操作,则重新登录。