会话超时前需提前警告
别名: 会话即将过期 · idle timeout warning · 登录超时警告
概念解释
登录会话、购物车、正在填写的申请在空闲一段时间后会被服务器作废。作废之前必须先出现警告,并给出足够时间去延长会话或先保存。人若只在提交时才发现已经退回登录页,中间输入的内容按超时被丢了,这不是「时限可以关掉」能事后弥补的——数据已经不在。
警告是会话这种时限的专用出口:安全上往往不能永久关闭空闲锁定,但可以、也必须在切断前提醒。
机制
会话时钟跑在服务器上,浏览器里的人看不见。阅读一篇说明、用阅读器听完一页条款、去找证件再回来,对服务器都是空闲。时钟一到,下一步请求带着过期 cookie 回来,页面被换成登录,本地未保存的字段随文档卸载。没有提前警告,用户无法区分「我点错了」和「时间到了」;有警告但短到来不及用辅助技术点「继续」,等于没有。
警告还必须自己可达:它常被做成定时弹出的对话框。若焦点不进去、读屏不播、倒计时只剩几秒,延长动作本身就被时限吃掉。会话时限的操作无障碍,在这一拍上成败。
怎么研究
用真实或测试账号进入长表单,停住不动直到接近空闲上限。记录:警告是否出现、提前量、是否可键盘操作、选延长后会话是否真的续上、选不延长或错过之后草稿是否还在。
对照:超时后再登录,字段还在吗?许多实现警告做了,保存没做,用户仍丢数据。这条的最低线是警告与可延长;丢失数据会把失败从「来不及确认」升级成「工作作废」。
边界
银行、医疗、公共终端上的硬性空闲锁定可以很短,仍然要警告——不能用行业敏感换掉提前量,只能把提前量按锁定时长比例缩放(短锁定也要留出操作警告的时间)。无账号的纯浏览会话若无任何可丢数据,警告可以不做;购物车、投稿、问卷一旦开始就不算「无数据」。多标签页里一个标签超时、另一个还在填,警告应在仍可见的页面上出现,不能只打在已经切走的那一页。
怎么落地
- 在服务器切断之前弹出可操作的警告,说明大约还剩多少时间,提供「继续会话」和必要时的「先保存」。
- 警告出现时把焦点移入,并让阅读器能读到;倒计时要长过用辅助技术完成一次点击。
- 延长必须真的续上服务端会话,不要只关对话框。
- 验证:填到一半停住,等到警告。只用键盘点继续,然后提交。若从未出现警告、或出现后仍丢字段,会话时限没有完成提前警告。