现状:跨设备找回身份,优先用 用户名 + 密码。恢复码是早期「纯 Cookie 身份」时代的自助方案,现仍可用,但属于兼容能力,新用户不必依赖它。
mdocs 初期刻意不做传统登录系统:不想要注册邮箱、账号密码那一套,希望打开就能写。
底层做法是:浏览器里通过 HttpOnly Cookie 下发一串随机高熵令牌,服务端只存其哈希,用这份 Cookie 标识「你是谁」。没有单独的账号表登录流程。
代价也很直接——Cookie / 本机身份数据一旦丢了(清站点数据、换浏览器、换设备),浏览器再也带不上原来的令牌,系统就认不出你还是以前那个人,文档所有权也接不上。
恢复码就是为这个问题准备的:一份由用户自己保存的一次性凭证,在 Cookie 丢失后,仍能凭码换回同一访客身份和新的 Cookie。
后续迭代引入了 登录密码(访客名 + 密码,可多设备会话):
因此恢复码的核心场景被密码覆盖,功能逐渐被边缘化,保留是为了兼容早期只靠 Cookie、已发过恢复码的用户。
| 方式 | 适用 |
|---|---|
| 用户名 + 密码(推荐) | 换设备、清 Cookie、日常跨端 |
| 恢复码 | 从未设密码、或只有早期恢复码可用的情况 |
管理员 visitor migrate | 以上都不可用时的运维兜底 |
格式形如:
若已设置登录密码,日常以密码为准即可。恢复码可选:仅当你希望多一条不依赖密码的兜底时再保存。
visitor migrate| Cookie 身份令牌 | 恢复码 | |
|---|---|---|
| 角色 | 日常请求鉴权(浏览器自动带) | Cookie 丢了之后的自助换发 |
| 存放 | HttpOnly Cookie | 用户自己抄走 |
| 推荐替代 | — | 登录密码(跨设备主路径) |
早期「无账户」指的是不做邮箱注册那套,用 Cookie 访客身份。现在的「访客名 + 可选密码」仍是轻量访客模型,不是完整的企业账号体系;密码解决的是 同一访客跨端续上身份,并不否定当初降低门槛的目标。身份模型细节见 无账户身份识别。