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基本认证中间件
使用方法
此代码取自 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