《SAAS平台-用户授权遇到问题-用户“非正常退出”》
用户“非正常退出”(如不点退出按钮,直接关闭浏览器),系统无法感知用户已经“退出”?
方案一:
利用websocket机制,断线立即触发“退出”动作
缺点:如果用户网络不稳定,经常掉线,系统会频繁退出,对用户很不友好
方案二:
判断onlineUser中是否存在该用户:
有:允许登陆
无:继续验证
当前登陆数是否到上限(大于等于用户授权数)
否:允许登陆
是:拒绝登陆
问题:
用户如果一直一非正常方式退出,则onlineUser一直存在该用户,绕过了用户授权数限制,漏洞?
解决:onlineUser 中用户缓存失效时间为”用户登陆有效的最大时长“,时间到立即淘汰该用户,也就是说最大可以通过漏洞多登录一天(比起用户体验,优先采用)