11个版本 (7个重大变化)

0.8.0 2022年11月6日
0.7.0 2021年11月12日
0.6.1 2021年7月12日
0.6.0 2021年3月20日
0.0.1 2018年7月6日

#3#jsonwebtoken

MIT/Apache

575KB
10K SLoC

gotham_middleware_jwt

为Gotham Web框架提供的中间件,用于验证JSON Web Tokens,如果请求验证失败则返回StatusCode::UNAUTHORIZED

用法

创建一个您希望反序列化的结构体。以下示例中,我们使用了Claims

#[macro_use]
extern crate serde_derive;

use futures::future;
use gotham::{
  helpers::http::response::create_empty_response,
  handler::HandlerFuture,
  pipeline::{
    new_pipeline,
    set::{finalize_pipeline_set, new_pipeline_set},
  },
  router::{builder::*, Router},
  state::{State, FromState},
};
use gotham_middleware_jwt::{JwtMiddleware, AuthorizationToken};
use gotham::hyper::{Response, StatusCode};

#[derive(Deserialize, Debug)]
struct Claims {
  sub: String,
  exp: usize,
}

fn handler(state: State) -> Box<HandlerFuture> {
  {
    let token = AuthorizationToken::<Claims>::borrow_from(&state);
    // token -> TokenData
  }
  let res = create_empty_response(&state, StatusCode::OK);
  Box::new(future::ok((state, res)))
}

fn router() -> Router {
  let pipelines = new_pipeline_set();
  let (pipelines, defaults) = pipelines.add(
    new_pipeline()
      .add(JwtMiddleware::<Claims>::new("secret".as_ref()))
      .build(),
  );
  let default_chain = (defaults, ());
  let pipeline_set = finalize_pipeline_set(pipelines);
  build_router(default_chain, pipeline_set, |route| {
    route.get("/").to(handler);
  })
}

许可证

此中间件包最初由Uptime Ventures, Ltd.的Nicholas Young创建,并由Gotham核心团队维护。

许可选择

依赖项

~15–31MB
~508K SLoC