GDWhisper/dsh-web-startup-auth ↗★ 47
dsh-web-startup-auth
提供远程访问支持与安全的管理员账号密码登录认证 适合将服务部署在公网或局域网服务器,需要安全登录防护的远程用户。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:GDWhisper/dsh-web-startup-auth说明文档
阅读完整 README ↗使用
- 浏览器访问
http://:/(在本机则用http://127.0.0.1:/,无需登录)。 - 远程访问首次会跳转到
/login,显示"设置管理员账号密码"注册表单。 - 注册成功后自动登录并进入主界面;之后访问需登录。
- 退出登录 / 修改用户名 / 修改密码 / 调整会话有效期:打开主界面设置面板 → 认证标签页(同时也是一个独立入口,
/api/auth/logout清除会话 cookie)。
如果需要在本地设置账号密码(本机默认免登录,界面不会自动跳登录页):
- 浏览器打开
http://127.0.0.1:/login—— 未注册时该页直接显示注册表单。 - 或进设置面板 → 认证,页顶「尚未设置管理员账号」处点「前往设置管理员账号」。
注册后本机仍免登录;想让本机也要登录,到认证 → 登录要求打开「本机登录校验」(需先有账号)。开关打开后本机也要走 /login(页面会立即跳过去),登录后认证页才会显示「当前登录」和退出登录入口。
凭据与会话密钥保存在 ~/.dsh/web-auth.json:
- 密码使用 scrypt(随机盐,64 字节)散列存储,不保存明文。
- 会话 cookie 用随机生成的密钥做 HMAC-SHA256 签名,防伪造。有效期档位(
sessionMaxAgeDays,默认 14)也存在这个文件里,可在设置面板调节;调整只对新签发的会话生效。 - 忘记密码:在服务器本机执行
dsh --profile web auth-reset,交互式设置新密码(或dsh --profile web auth-reset --password非交互)。重置会轮换会话密钥,所有已登录的浏览器都需要重新登录一次。 - 修改用户名 / 修复含控制字符的用户名:
dsh --profile web auth-reset --username(可与--password同用)。同样轮换会话密钥。用户名在注册/登录/修改时统一剥除 C0 控制字符(0x00–0x1F)与 DEL(0x7F)——旧版本若已把含 DEL 的用户名原样存盘,用它即可修复。 - 兜底方案:删除
~/.dsh/web-auth.json并重启,即可重新注册。这只影响登录状态——已登录的浏览器需要再登录一次,不会删除任何会话记录或历史数据(它们存在~/.dsh/sessions/等位置,与本文件无关)。 auth-reset不能用来首次创建账号:它要求已有凭据,否则报「尚未注册管理员账号,无需重置」。首次只能用上面的注册页。