2个不稳定版本
0.2.0 | 2023年2月15日 |
---|---|
0.1.0 | 2021年12月6日 |
#398 in 认证
11KB
152 代码行
一个简单的库,用于根据https://jwt.node.org.cn/introduction使用HMAC SHA256生成和解析JWT令牌
###编码示例
use jwt_hmac;
use serde::Serialize;
#[derive(Serialize)]
struct Claims{
sub: String,
name: String,
admin: bool
}
fn main(){
let secret = "I'm a secret".as_bytes();
let claims = Claims{
sub: "1234567890".to_string(),
name: "John Doe".to_string(),
admin: true
};
match jwt_hmac::create(secret, &claims) {
Ok(token) => println!("Token: {}", token),
Err(error) => println!("This can't be happening {}", error)
}
}
###解码示例
use jwt_hmac;
use serde::Deserialize;
#[derive(Deserialize)]
struct Claims{
sub: String
}
fn main(){
let secret = "I'm a secret".as_bytes();
match jwt_hmac::parse::<Claims>(
secret,
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.azXPRJHeWcZ_B5WHtA98gsnowX5gifvMJX2hoH_4YPs"
){
Ok(claims) => println!("Sub: {}", claims.sub),
Err(error) => match error{
jwt_hmac::Error::InvalidChecksum => println!("Secret doesn't match"),
_ => println!("Probably not a valid JWT: {}", error)
}
}
}
如上述示例所示,您可以为客户端填充大量声明,并在解析时只提取有用的部分。
依赖项
~1.3–2.1MB
~47K SLoC