很多框架也能做鉴权。
但 Rocket 的不同点在于,它把这件事变成了函数签名的一部分。
例如:
#[get("/profile")]
async fn profile(user: CurrentUser) -> String你看到这个签名时,不需要看内部实现就知道:
这个接口要求当前请求已经被识别出合法用户。
再比如:
#[post("/launch/<id>")]
async fn launch(id: u64, _admin: AdminUser, state: &State<AppState>) -> String你一眼就能读出:
- 有任务编号
- 需要管理员权限
- 还需要控制塔共享状态
这正是 Rocket 很有“控制塔工程感”的地方:
函数签名本身就在描述一次发射任务的准入条件。