Expand description
管理台的登录保护。
§为什么保护范围是「除了 /health 之外全部」
管理台那个 HTML 页面本身没什么可保护的 —— 真正危险的是它调的接口:
abort 能中止在途事务、retry 能改调度、submit 能凭空造事务。
只给页面加登录而把 /api/dtmsvr/* 敞着,等于没加。
所以这里是全局中间件,白名单只有 /health(反向代理的健康检查要用)
和 /login 本身。
§没配密码时不启用
DTMRS_ADMIN_PASSWORD 没设就完全不拦 —— 内网/本地开发的用法不变。
但一旦你打算暴露到公网,这个变量就是必须的,main.rs 在监听
非回环地址且没配密码时会打醒目警告。
§会话存在内存里
单进程 TC,没必要引入签名/JWT 那一套。代价是重启后所有人要重新登录, 对管理台来说完全可以接受。多实例部署时各实例的会话不互通, 前面挂负载均衡的话要开会话保持(或者干脆每个实例单独登录)。
Structs§
Functions§
- guard
- 全局中间件:除
/health和/login外都要求已登录。 - login_
page - login_
submit - logout