6个版本 (破坏性更新)

0.7.0 2023年11月28日
0.4.1 2023年10月4日
0.4.0 2022年12月3日
0.3.0 2022年8月17日
0.1.1 2022年3月27日

#100 in 身份验证

Download history 1865/week @ 2024-04-08 2653/week @ 2024-04-15 2579/week @ 2024-04-22 1774/week @ 2024-04-29 2003/week @ 2024-05-06 2448/week @ 2024-05-13 2854/week @ 2024-05-20 2127/week @ 2024-05-27 3048/week @ 2024-06-03 2942/week @ 2024-06-10 3394/week @ 2024-06-17 3090/week @ 2024-06-24 3139/week @ 2024-07-01 2999/week @ 2024-07-08 3415/week @ 2024-07-15 3286/week @ 2024-07-22

每月13,028次下载
7 crates 中使用

MIT/Apache

22KB
117

axum身份验证

为axum提供高级 http身份验证 提取器

🚨 此crate提供对 TypedHeader<Authorization<..>> 的替代方案,您可以使用它代替。如果您在寻找更健壮的会话管理,请查看出色的 axum-login crate。我将继续维护此crate。

用法

Bearer身份验证

use axum_auth::AuthBearer;
 
/// Handler for a typical axum route, takes a `token` and returns it
async fn handler(AuthBearer(token): AuthBearer) -> String {
    format!("Found a bearer token: {}", token)
}

基本身份验证

use axum_auth::AuthBasic;
 
/// Takes basic auth details and shows a message
async fn handler(AuthBasic((id, password)): AuthBasic) -> String {
    if let Some(password) = password {
        format!("User '{}' with password '{}'", id, password)
    } else {
        format!("User '{}' without password", id)
    }
}

您还可以定义自定义提取器,让您在身份验证失败时返回自定义提取器、状态码和消息给用户。请查看crate文档 以获取有关如何工作的更深入的信息!

安装

只需将以下内容放入axum的Cargo.toml文件中

[dependencies]
axum-auth = "0.7"

我们的版本从0.7开始遵循axum。您还可以通过功能启用仅基本/载体身份验证。要仅启用基本身份验证,您可以将以下内容添加到Cargo.toml文件中

[dependencies]
axum-auth = { version = "0.7", default-features = false, features = ["auth-basic"] }

如果您仍在使用axum 0.5,请使用版本0.3。如果您仍在使用axum 0.6,请使用版本0.4。

安全性

以下是一些需要考虑的基本安全注意事项

  • 此crate尚未由任何安全专家审计。如果您愿意进行或已对此crate进行审计,请创建一个问题,因为这将非常有帮助!😊
  • 此crate有意不限制到达头部的最大长度,请确保您的Web服务器配置已正确设置。

许可

本项目采用双重许可协议,既遵循MIT协议,也遵循Apache协议,您可以根据自己的需要自由选择使用。

依赖项

~1.8–2.6MB
~51K SLoC