2个版本

0.1.1 2023年10月26日
0.1.0 2023年10月24日

#821 in HTTP服务器

MIT 许可证

18KB
71

Tide (http-rs/tide) JWT认证中间件

这个Rust库为Tide web服务器框架提供了一个中间件,专注于使用tide_jsonwebtoken crate通过JWT(JSON Web Tokens)进行API密钥认证。

License: MIT Crates.io Documentation

功能

  • 使用JWT无缝验证API密钥。
  • 直接与Tide路由集成。
  • 高效处理受保护和不受保护的路由。

快速入门

将所需依赖项添加到您的Cargo.toml

[dependencies]
tide = "0.16" # Use the latest version
tide-jsonwebtoken = "0.1.0" # Use the latest version
async-std = { version = "1.12.0", features = ["attributes"] } # Use the latest version

用法

  1. 初始化中间件:

    首先,创建一个ApiKeyMiddleware实例

    let jwt = ApiKeyMiddleware::new("your-secret-key");
    
  2. 设置Tide应用程序:

    初始化Tide应用程序并将中间件应用于特定路由

    let mut app = tide::new();
    app.at("/login").get(|_| async { Ok("Login route!") });
    app.at("/name/:id")
       .with(jwt)
       .get(|req: Request<()>| async move {
            Ok(format!("Hello, {}!", req.param("id").unwrap_or("0")))
        });
    
  3. 运行服务器:

    app.listen("127.0.0.1:8080").await?;
    

错误处理

中间件检查传入请求中的x-api-key头。如果JWT验证通过,则请求继续;否则,中间件返回401 未授权状态。潜在的错误消息包括

  • API密钥缺失:请求缺少x-api-key头。
  • 无效的API密钥:提供的API密钥(JWT)无效。

贡献

鼓励提交拉取请求。对于重大调整,请首先发起一个问题,以讨论所需更改。

依赖项

~9–21MB
~336K SLoC