登录与会话时长:密钥库、心跳、离线宽限
Senzoukria 桌面端用网站账户的邮箱和密码解锁。会话令牌有效期 15 分钟,由每 5 分钟一次的心跳续期;连续 30 分钟没有成功续期,应用就会登出。
Senzoukria · 文档 · 更新于 2026 年 9 月
位置
- 位置
- Sz 菜单 → 账户;没有会话时,每个受保护的路由都会跳到这里
- 凭据
- 「保存我的凭据(操作系统密钥库)」默认勾选;密码进入系统凭据库,绝不写入文件
- 令牌
- 有效期 15 分钟,每 5 分钟心跳一次,失败后每 60 秒重试,连续 30 分钟未续期即登出
它做什么
登录表单要求填写邮箱和密码,并提示:「在你登录之前,应用保持锁定。请使用你 Senzoukria 网站账户的邮箱和密码 —— 在网站上登录并不会解锁桌面端。」在最初一次启动、还不存在任何会话时,欢迎卡片会提供「在网站注册」和「我已有账户」两个入口。
凭据保存后,表单会从密钥库预填,并在进程首次挂载时自动提交一次。执行登出之后,表单仍会预填,但会等待你点击,这样登出就不会被自动登录抵消。自动登录失败不会清除已保存的凭据:一次网络抖动不该抹掉记住的登录信息。
会话生命周期
| 规则 | 取值 | 作用 |
|---|---|---|
| 令牌有效期 | 15 分钟 | 服务端 JWT 过期;续期是心跳的职责 |
| 心跳间隔 | 5 分钟 | 续期令牌,并重新校验许可证、订阅和机器 |
| 临时失败后重试 | 60 秒 | 网络错误、429 或 503 会重试;它们从不重置宽限计时 |
| 未续期的最长时间 | 30 分钟 | 超过之后应用在本地登出 |
| 确定性拒绝 | 除 408、425、429 之外的 HTTP 4xx | 立即登出;不会再尝试用密码重新登录,因此被吊销的机器不会被重新创建 |
| 唤醒 | 窗口获得焦点、恢复联网事件、标签页可见 | 触发一次到期的心跳;会话仍新鲜时不会额外增加请求 |
| 刷新按钮 | 账户页 | 手动执行一次心跳:「通过心跳续期会话令牌」 |
怎么用
填入网站账户的邮箱和密码;如果这是你自己的机器,就保留勾选框。链接「忘记密码?用 Google 注册的?」会打开网站:用 Google 注册的账户在那里设置密码之前是没有密码的,而应用无法直接用 Google 登录。
在账户页登出会结束会话,但保留密钥库条目;下次登录时取消勾选即可清除它。反馈行会显示「已登出 — 在下方登录以恢复访问。」
限制与易错点
错误提示及其含义:
- 「邮箱或密码不正确。」 — 服务端返回 INVALID_CREDENTIALS。
- 「此账户使用 Google 登录。请用下方的《忘记密码?》设置一个密码,然后在此登录。」
- 「使用桌面端需要 PRO 订阅。」以及「你的订阅已过期。」 — 许可证在登录时和每次心跳时都会校验。
- 「此许可证已达到可同时使用的机器数上限。」 — 请在网站的设备页面释放一个名额。
- 「账户暂时锁定。请几分钟后重试。」 — 多次失败之后出现。
- 网络错误不会让密码失效;提示会告诉你不必重置密码。
- 如果写入密钥库失败,应用仍会让你登录,并显示真实的错误,而不是假装凭据已保存。
相关页面
其他语言版本
常见问题
- 为什么离线工作之后我被登出了?
- 会话需要每 30 分钟至少一次成功的心跳。断网时间超过这个长度,应用会在本地登出;恢复联网后重新登录即可。
- 应用会把我的密码存进文件吗?
- 不会。开启「保存我的凭据」时,密码进入操作系统密钥库(凭据管理器、Keychain 或 Secret Service)。会话令牌由 Rust 侧处理。
- 我已经在 senzoukria.com 上登录了,为什么桌面端还是锁着?
- 网站会话和桌面端会话是分开的。请在应用的登录表单里使用同一个邮箱和密码。