#gotham #middleware #http-basic #http #web #authentication

gotham-middleware-basicauth

为Gotham框架提供的http基本认证中间件

3个版本 (破坏性更新)

0.3.0 2021年8月3日
0.2.0 2019年8月4日
0.1.0 2019年8月3日

#1309 in HTTP服务器

自定义许可

17KB
88

gotham-middleware-basicauth

为Gotham框架提供的http基本认证中间件

License 996.ICU Build Status

使用方法

此代码取自 examples/basic-auth/main.rs

use gotham::pipeline::new_pipeline;
use gotham::pipeline::single::single_pipeline;
use gotham::router::builder::*;
use gotham::router::Router;
use gotham::state::State;
use gotham_middleware_basicauth::AuthMiddleware;

fn router() -> Router {
    // default allow user admin login with password "admin"
    // and protect all paths
    let (chain, pipeline) = single_pipeline(
        new_pipeline().add(AuthMiddleware::default()).build(),
    );

    build_router(chain, pipeline, |route| {
        route.get("/").to(say_hello);
        route.get("/abc").to(say_hello);
    })
}

fn say_hello(state: State) -> (State, &'static str) {
    (state, "Hello Auththorized User!")
}

fn main() {
    let addr = "0.0.0.0:8000";
    println!("gotham is running on 0.0.0.0:8000, login with admin/admin");
    gotham::start(addr, router());
}

正如你所见,它非常容易使用,default 方法返回一个中间件,当首次访问网站时需要以管理员密码admin登录。

你可以手动创建一个新的中间件,示例中的代码 scoped-auth 展示了如何创建一个新的中间件

let middleware: AuthMiddleware = AuthMiddleware {
    userlist: vec!["admin:admin".to_owned()],
    scopes: vec!["/scoped".to_owned()],
    };

你可以传递一个格式为 "username:password" 的用户列表,以及一个你想通过基本认证保护的路径列表。请注意,如果路径被保护,它的子路径也将被保护。

要运行这些示例,运行

cargo run --example basic-auth

cargo run --example scoped-auth

然后在你的浏览器中打开 https://127.0.0.1:8000

待办事项

  • 添加作用域保护的路径
  • 更优雅的错误处理和日志输出
  • 添加文档
  • 添加单元测试
  • 扩展协议以启用注销和登录控制
  • 发布到crates.io
  • 基本使用和作用域路径功能的文档

依赖

~13–25MB
~335K SLoC