全书目录

第四十四篇:Rocket 完全指南 —— 火箭发射控制塔宇宙

第八章:Request Guards 为什么强 —— 因为它把权限和上下文从 handler 里剥出来了

1 分钟 180 字 第 817 / 962 个阅读单元

很多框架也能做鉴权。

但 Rocket 的不同点在于,它把这件事变成了函数签名的一部分。

例如:

rust
#[get("/profile")]
async fn profile(user: CurrentUser) -> String

你看到这个签名时,不需要看内部实现就知道:

这个接口要求当前请求已经被识别出合法用户。

再比如:

rust
#[post("/launch/<id>")]
async fn launch(id: u64, _admin: AdminUser, state: &State<AppState>) -> String

你一眼就能读出:

  • 有任务编号
  • 需要管理员权限
  • 还需要控制塔共享状态

这正是 Rocket 很有“控制塔工程感”的地方:

函数签名本身就在描述一次发射任务的准入条件。