5 个版本
0.6.0 | 2024 年 3 月 10 日 |
---|---|
0.5.5 | 2024 年 3 月 10 日 |
0.5.4 | 2024 年 3 月 10 日 |
0.5.3 | 2024 年 3 月 10 日 |
0.5.2 | 2024 年 3 月 10 日 |
#39 in #cookies
18KB
195 行
rocket-jwt
[email protected] 的 jwt 授权
#[macro_use]
extern crate rocket;
use rocket_jwt::jwt;
static SECRET_KEY: &str = "secret_key";
#[jwt(SECRET_KEY)]
pub struct UserClaim {
id: String,
}
#[jwt("secret", exp = 100)]
pub struct UserClaimExp {
id: String
}
#[jwt("secret", leeway = 10)]
pub struct UserClaimLeeway {
id: String
}
// get token from cookie, key is `token`
#[jwt("secret", cookie = "token")]
pub struct UserClaimCookie {
id: String
}
// get token from request query, key is `token`
#[jwt("secret", query = "token")]
pub struct UserClaimQuery {
id: String
}
#[get("/")]
fn index() -> String {
let user_claim = UserClaim {
id: format!("hello_rocket_jwt"),
};
let token = UserClaim::sign(user_claim);
println!("{:#?}", UserClaim::decode(token.clone()));
token
}
#[get("/user_id")]
fn get_uer_id_from_jwt(user: UserClaim) -> String {
format!("user id is {}", user.id)
}
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![index, get_uer_id_from_jwt])
}
API
属性 | 类型 | 描述 | 默认 |
---|---|---|---|
String | jwt 密钥,必需 | ||
exp | Int | token 过期时间(秒) | 2592000 (一个月) |
leeway | Int | token 过期容差(秒) | 60 (一分钟) |
cookie | String | 从 cookie 键获取 token,可选 | |
query | String | 从查询键获取 token,可选 |
运行示例
cargo run --example rocket-jwt-demo
- 获取
jwt
token
curl http://127.0.0.1:8000
- 使用
jwt
token
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" http://127.0.0.1:8000/user_id
许可证
依赖
~6.5–9MB
~258K SLoC