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

MIT 许可证

18KB
195

rocket-jwt

[email protected] 的 jwt 授权

[email protected] 查看 v0.4.

#[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
  1. 获取 jwt token
curl http://127.0.0.1:8000
  1. 使用 jwt token
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" http://127.0.0.1:8000/user_id

许可证

MIT

依赖

~6.5–9MB
~258K SLoC