DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

BeyondandSharp /

BeyondandSharp/dsh-plugin-notoken

Verified

反代时,让首次访问不用带token

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@e53f0ba6

dsh-plugin-notoken

DSH 本地插件:注册一个登录入口路由(默认 GET /__dsh_login),把进程里的登录 token 换成浏览器会话 cookie,让首次访问不用带 ?token=…。

⚠️ 不安全

装上之后,任何能访问这个端口、并且 Host 通过 DSH 信任围栏的人,都等于拿到了 operator 权限 —— 可以执行工具、读取凭据、以运行 dsh web 的 OS 用户身份操作这台机器。

原理

DSH 只在两处做浏览器认证:frontend-static 渲染 index 前调用 connection.authorizeIndex(),以及 /api 路由自己的准入检查。插件注册的具名路由在两者之前匹配、默认不认证 —— 入口就在这条缝里:

GET /__dsh_login
  ├─ connection.requestRejection()  先过信任围栏:403 拒绝;401(还没有会话)放行
  ├─ connection.authenticatedUrl()  取当前进程 token(每次请求都取,重启后仍有效)
  ├─ connection.authorizeIndex()    进程内完成 token → cookie 交换(303 + Set-Cookie)
  └─ 普通导航:把 303 转发给浏览器
     跨站导航(点链接、主屏幕图标启动):直接返回应用外壳,cookie 一起下发
     (那条链上 SameSite=Strict 的 cookie 会被一直扣住,走 303 会变成"重定向次数过多")

不签 cookie、不接触密钥、不解析启动输出、不改 DSH 源码。

安装

$DSH plugin --profile web add @beyondandsharp/dsh-plugin-notoken         # 从 npm
# 也可以直接装 GitHub 或本地目录:
$DSH plugin --profile web add github:BeyondandSharp/dsh-plugin-notoken
$DSH plugin --profile web add /path/to/dsh-plugin-notoken                # DSH=/path/to/dsh

nginx

示例见 examples/nginx.conf:把裸 / 的 401 在服务端内部改写成入口, 地址栏全程停在 /。两条硬规则:Host 原样透传(cookie 绑定它),且该 authority 在 trustedHosts 里; 只拦 location = /,/api 与 WebSocket 一律原样透传。

验证

node --test && bash verify/e2e.sh
—/ 5

No ratings yet

Verified DSH bundle

Commit e53f0ba61c83

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout