rust web 的自定义extract获取jwt
刚开始学习rust的时候,web框架一大堆,感觉无所适从。有的框架类似于 springboot里注解的方式 使用宏,有的是用函数的方式。
随着异步框架 tokio地位的稳固,axum是一个不错的选择。axum采用的是函数的方式。
其实框架里是写好的验证处理程序的。源码里有基本验证和令牌验证两种方式。
原来有的令牌验证,一是字段不能重新定义,二是字段的值分为两部分。如果前端的人不是深究过http协议,估计会骂街。
前端提交了用户名和密码后,得到了 jwt。后续业务中,将jwt放置到 商量好 的自定义header里即可。
以令牌里只涉及 用户ID 和 过期时间 为例 定义 Claims。
#[derive(Debug, Serialize, Deserialize)] pub struct Claims { uid: String, exp: u64, // Unix stamp at expired time } impl std::fmt::Display for Claims { fn fmt(&self, f: &mut Formatter<"_>) -> std::fmt::Result { write!(f, "{}", self) } }