标准 · WCAG 2.2

SC 2.2.5 级别 AAA WCAG 2.0

重新认证

当已认证会话过期时,用户必须能够在不丢失任何已输入数据的情况下继续操作。会话结束,但进行中的工作不会丢失。

要求内容

如果已认证会话在任务执行途中过期,用户必须能够重新认证并恢复操作,且不丢失任何已输入的数据。表单字段保持填写状态,购物车保持满载,半写的评论保持草稿状态。

如何满足

  • 在每次有意义的更改时(而非仅在提交时),将表单状态持久化到服务器(或通过恢复提示持久化到本地存储)。
  • 当会话过期时,向 API 调用返回 401,但让用户停留在同一页面;在页面内呈现登录提示,而非完整跳转。
  • 重新认证成功后,使用原始数据重放原始操作。用户的体验应如同没有发生任何中断。
  • 对于多步骤流程,将进度以用户账号为键存储在服务器端,而非以会话令牌为键。

常见失败

  • 银行转账流程中,会话过期后将用户跳转至登录页面,且部分填写的转账表单已消失。
  • 评论系统中,长篇回复在重新认证跳转时丢失——常见于 Reddit、新闻网站和论坛。
  • 多步骤政府表单在会话过期时丢失所有已输入数据,强制用户从第一页重新开始。
  • 结账流程中购物车得以保留,但配送和支付信息必须重新输入。

重要性

这一成功准则旨在尊重用户的劳动成果。对任何用户而言,重新填写一份长表单都令人烦恼;对于使用屏幕阅读器、语音控制或开关设备的用户来说,这可能意味着又要花费二十到四十分钟——这也往往是他们放弃的原因。大多数商业网站尚未达到此标准,但云生产力应用(Google Docs、Office 365、现代银行系统)已通过自动保存加后台重新认证机制在很大程度上解决了这一问题。