开发者社区> 问答> 正文

用户登录网站后,用户在一段时间内与网站没有交互,则视为离开,需要用户重新登陆,如何实现?

如果能够详细说明就最好了,谢谢!
1.一段时间:设为10分钟。
2.用户重新登录:提示用户因为安全问题需要重新登陆。(类似支付宝提示用户重新登陆效果)

展开
收起
杨冬芳 2016-06-14 16:03:08 3236 0
1 条回答
写回答
取消 提交回答
  • IT从业

    正确的检测当然必须以后端为准(session的过期机制)。但缺点是一般会在用户提交后才告知用户:你需要登录。显然体验不够好。

    你更关心的是前端吧?(我是根据问题的标签来猜测的)

    首先要定义:什么是“与网站没有交互”?

    我建议的方案如下:
    •只要网页失去焦点(window 的blur事件),就开始一个 setTimeout 来调用函数 checkSession
    •如果网页重新获取了焦点(focus事件),则clearTimeout
    •checkSession 函数用ajax默默地向后端请求检测session是否过期。如果是,则提醒用户重新登录

    这个方案的优点是:足够简单

    而缺点是:如果用户同时开了多个页面,那么经常看到重新登录的通告。

    你可以进一步利用cookie来跨页面计时:只要有任意一个页面focus,那么clearTimeout

    2019-07-17 19:37:58
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
内容驱动游戏分发 立即下载
微信客户端怎样应对弱网络 立即下载
十分钟上线-使用函数计算构建支付宝小程序服务 立即下载