Rust使用jsonwebtoken时如何自定义JWT Claim的字段名称?
解决JWT字段名映射问题:将结构体字段重命名为带特殊字符的Claim名
可以通过Serde的rename属性实现这个需求——jsonwebtoken crate底层依赖Serde进行序列化/反序列化,因此直接利用Serde的字段重命名功能即可自定义JWT中的Claim名称。
修改你的结构体定义,为foo字段添加#[serde(rename = "example.com/foo")]属性:
use serde::{Serialize, Deserialize}; #[derive(Debug, Serialize, Deserialize)] struct MyTokenClaims { #[serde(rename = "example.com/foo")] foo: String, bar: String, baz: String, }
这样处理后:
- 生成JWT时,结构体的
foo字段会被序列化为"example.com/foo"这个Claim键名 - 解析JWT时,
"example.com/foo"也会正确映射回结构体的foo字段
内容的提问来源于stack exchange,提问作者eof
相关产品推荐
相关产品推荐

