rocket-jwt

jwt authorization for rocket@0.5.

rocket@0.4 see (v0.4)[https://github.com/Yaxian/rocket-jwt/tree/v0.4].

```rust

![feature(procmacrohygiene, decl_macro)]

[macro_use]

extern crate rocket;

use rocket_jwt::jwt;

static SECRETKEY: &str = "secretkey";

[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 userclaim = UserClaim { id: format!("hellorocketjwt"), }; let token = UserClaim::sign(userclaim); println!("{:#?}", UserClaim::decode(token.clone())); token }

[get("/user_id")]

fn getueridfromjwt(user: UserClaim) -> String { format!("user id is {}", user.id) }

fn main() { rocket::ignite() .attach(UserClaim::fairing()) .mount("/", routes![index, getueridfromjwt]) .launch(); }

```

API

| 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 | |

Run example

cargo run --example rocket-jwt-demo

  1. get jwt token

curl http://localhost:8000

  1. use jwt token

curl -H "Authorization: Bearer YOUR_JWT_TOKEN" http://localhost:8000/user_id

License

MIT