在企业级项目中,对用户进行下线操作是一项常见需求。为满足这一需求,系统需具备以下核心功能:
- 能够根据用户ID移除特定会话,当对方再次访问系统时,将收到提示:“您已被踢下线,请重新登录。”
- 能够查询出同一账号在多个设备端的登录情况,并返回相应的Token凭证,以便后续操作。
- 可以针对某一账号的特定设备进行会话移除,而不影响其他设备的正常登录状态。如在电商APP中,可查看账号在多台手机上的登录情况,并仅注销特定手机的会话。
为实现这一功能,手动从零开始设计会话架构需要一定的代码量。而借助Sa-Token框架,可以轻松地完成上述需求。Sa-Token是一个轻量级的Java权限认证框架,主要解决登录认证、权限认证、单点登录等一系列与权限相关的问题。
在项目中引入Sa-Token依赖。对于SpringBoot 3.x用户,只需将依赖改为sa-token-spring-boot3-starter即可。
接下来,让我们了解一下Sa-Token提供的与用户下线相关的API。
“强制注销”与“踢人下线”在操作上有一定区别:
- “强制注销”相当于用户主动触发了注销操作,再次访问时会收到“Token无效”的提示。
- 而“踢人下线”则不会清除Token信息,而是在Token上打上特定标记,使得再次访问时用户会收到“Token已被踢下线”的提示。
在实际操作中,我们会在三个独立的浏览器上进行测试登录,以确保会话不会相互覆盖。登录成功后,服务端将返回相应的信息。随后,我们通过不同浏览器访问踢人下线的接口,并观察返回信息,以验证踢人下线操作是否成功。
我们还可以实现查询当前账号在多个设备上的登录情况,并选择特定Token进行踢下线操作。在这一过程中,其他设备的登录状态将不受影响。
为了更好地满足业务需求,我们可以在application.yml中添加相关配置,如是否在多人登录同一账号时共用Token等。在KickController的基础上,我们可以继续添加接口,以满足更多业务场景的需求。