jwt authorization for rocket@0.5.
rocket@0.4 see (v0.4)[https://github.com/Yaxian/rocket-jwt/tree/v0.4].
```rust
extern crate rocket;
use rocket_jwt::jwt;
static SECRETKEY: &str = "secretkey";
pub struct UserClaim { id: String, }
pub struct UserClaimExp { id: String }
pub struct UserClaimLeeway { id: String }
// get token from cookie, key is token
pub struct UserClaimCookie { id: String }
// get token from request query, key is token
pub struct UserClaimQuery { id: String }
fn index() -> String { let userclaim = UserClaim { id: format!("hellorocketjwt"), }; let token = UserClaim::sign(userclaim); println!("{:#?}", UserClaim::decode(token.clone())); token }
fn getueridfromjwt(user: UserClaim) -> String { format!("user id is {}", user.id) }
fn main() { rocket::ignite() .attach(UserClaim::fairing()) .mount("/", routes![index, getueridfromjwt]) .launch(); }
```
| attribute | type | description | default | |----------|------|-------------|---| | | String | jwt secret key, required | | | exp | Int | token expire after seconds | 2592000 (one month) | | leeway | Int | token expire leeway in seconds | 60 (one minute) | | cookie | String | get token from cookie key, optional | | | query | String | get token from query key, optional | |
cargo run --example rocket-jwt-demo
jwt
token
curl http://localhost:8000
jwt
token
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" http://localhost:8000/user_id