4 个回答
新手上路,请多包涵

jwt
token设置有效时间
当有效时间过了就拦截,也就是离线

这个都是后端做,控制会话过期时间,
超过时间的自然无效了,也就离线。

前端倒计时虽然也可以控制,但不是好方法,因不能保证用户能留在前端页面。

新手上路,请多包涵

简单的方法,前端保存下登录时间,每次请求后端接口都检查下这个时间,没过期就更新一下时间,过期了就删除登录信息,跳转到登录界面.
检查时间的操作和请求方法封装到一起

这是我采用的方案,由前端控制的,还须调用一下后端的注销接口,参考一下吧

// 最后操作时间
window.lastOperateTime = dayjs();
function updateLastOperateTime() {
    window.lastOperateTime = dayjs();
}
// 10分钟定时器
let myInterval = window.setInterval(function () {
    let difference = dayjs().diff(window.lastOperateTime, 'minute');
    console.info("myInterval    difference----->", difference);
    // 是否超出固定时间120分钟(2小时)未操作
    if (difference > 120) {
        // 关闭定时器,刷新主页面
        window.clearInterval(myInterval);
        window.location.href = '../login.html?random=' + Math.random();
    }
}, 10 * 60 * 1000);
// 更新键盘或鼠标最后操作时间
$(document).keydown(function (e) {
    updateLastOperateTime();
});
$(document).mousemove(function (e) {
    updateLastOperateTime();
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题