需能远程终止单个会话
别名: 踢出设备 · revoke session · 远程退出
概念解释
看见陌生会话之后,人需要能只结束那一条,而不必改密码、不必把所有设备一起踢下线。远程终止单个会话指服务器立刻作废该会话的刷新与访问令牌,目标设备在下一次请求时回到未登录,其它会话保持。这条管选择性作废,不管列表长什么样,也不管异常登录要不要推送。它也不是本机点「退出」——本机退出是另一条路径。
机制
令牌一旦发到设备上,持有者不必再证明身份。卖旧手机、共享电脑、被偷的平板,都留下一条仍被承认的授权。只提供「退出所有设备」会把本人的电脑一并踢掉,代价高到人不敢用;只提供改密则把一次设备丢失升级成全账号危机。单条终止把补救粒度对齐到威胁粒度。作废必须在服务端生效:只删列表上的一行、令牌仍能调 API,是假终止。目标设备上应出现「已在其他地方退出」而不是像网络错误,否则人以为是故障而反复登录,把新令牌又发回去。
怎么研究
布置一条「不该再活着」的会话,比较单条终止、全部终止、只能改密三种补救,看威胁会话是否死、本人会话是否还在。
自变量:终止粒度(单条、全部、无)、作废是否含刷新令牌、目标设备的提示文案。 因变量:被终止会话的后续 API 是否仍成功、本人其他设备是否仍登录、人是否敢对陌生条目采取行动。
实验室里两条会话都是被试自己的,情感代价低。真实威胁下人会害怕点错。测量要包含「指错当前会话并终止」的误伤。不要把「列表上消失」当成功——要打那条令牌的真实请求。
边界
当前会话的终止就是本机退出,按钮应避免让人在列表里踢自己时没有确认。有的刷新令牌被做成不可单独吊销的家族,工程上必须能按会话 ID 吊销,否则这条交互无法兑现。企业设备合规可能禁止用户自行踢掉托管会话,入口应说明要找管理员。密码重置后作废全部会话是找回流程的保险,不能替代日常的单条踢出。
怎么落地
- 每一条非当前会话提供「退出这台设备」,确认后立即吊销该会话的访问与刷新令牌。
- 被踢的设备下次前台请求时展示「已在其他设备退出」,不要用通用网络失败;禁止自动静默重登除非人再次完整认证。
- 提供「退出除当前外的全部」作为批量动作,与单条终止分开,避免只有全开或全关。
- 验证:用设备 B 的令牌在被 A 点终止后调用需认证接口,应失败;设备 A 与设备 C 仍成功。再故意终止当前会话,确认那就是一次本机退出而不是把别人留下、自己还在。抽查列表消失后令牌是否仍活。