登录与设备
管理密码、Passkey 和登录设备;需要移出设备或恢复登录时查阅本页。
Calends 是单用户应用:只有一个主人,一个密码,可以绑定多个 Passkey。登录相关的设置都在「设置 → 安全」。
- 至少 8 位,以 PBKDF2-SHA256 加盐哈希保存,服务端不保存明文。
- 「修改密码」需要先输入当前密码。修改后,除当前设备外的所有登录都会失效。
- 首次设置密码需要初始化令牌,见首次设置。
界面没有邮件找回入口。「修改密码」即使在已登录设备上也要求当前密码。如果有可用的 Passkey,可以继续登录并先导出备份。
需要重设密码时,在你控制的数据库中删除密码记录,再用 SETUP_TOKEN 初始化。操作只删除密码哈希,不删除账本数据,也不会主动撤销已有会话或 Passkey。
-
确认可以读取或重新配置
SETUP_TOKEN,并先备份数据库。 -
在部署目录执行对应命令:
终端窗口 # Cloudflarenpx wrangler d1 execute DB --remote --command "DELETE FROM kv WHERE key = 'auth'"# Docker(DATA_DIR 使用默认 /data 时)docker exec calends node_modules/.bin/wrangler d1 execute DB --local --persist-to /data \--command "DELETE FROM kv WHERE key = 'auth'" -
打开
/admin,输入初始化令牌并设置新密码。 -
检查「登录设备」和 Passkey 列表,移除不再需要的访问。
Passkey
Section titled “Passkey”「添加 Passkey」后,可以在登录页选「用 Passkey 登录」,用面容、指纹或设备密码登录。列表里显示每个 Passkey 的添加时间和上次使用时间,不用的可以「移除」。
Passkey 绑定在站点的域名上,必须通过 HTTPS 访问。换了域名之后,旧的 Passkey 在新域名上无法使用:先用密码登录,再在新域名上重新添加。
「登录设备」列出所有还有效的登录:浏览器和系统、登录方式(密码或 Passkey)、登录时间、最近活跃时间,以及按 IP 估算的位置(仅供参考)。当前设备标为「本机」。
- 移出:让某一台设备立即退出登录。当前设备不能移出,请用「退出登录」。
- 退出其他所有设备:只保留当前设备。
- 最多同时登录:1、2、3、5、10 或 20 台,缺省 10 台。超过上限时,最久没有活动的设备会被自动退出;调低上限后立即生效。
每次登录有效期 180 天。会话令牌放在 HttpOnly、SameSite=Lax 的 Cookie 里(HTTPS 下加 Secure),服务端只保存它的哈希。
同一个 IP 在 15 分钟内失败 6 次后会被暂时锁住,提示「尝试过多,请 15 分钟后再试」。密码登录、Passkey 登录和首次设置共用这个限制。
部署在 Cloudflare 上时,Calends 从 Cloudflare 提供的请求头读取访客的真实 IP。自托管在反向代理后面时,需要设置 TRUST_PROXY=1,才会信任 X-Forwarded-For;否则所有访客都会被当作代理服务器的同一个 IP。不在代理后面时不要设置它,否则别人可以伪造这个请求头绕过限速。见配置项。