#查询参数 #HMAC #验证 #Tower #断言 #Axum #查询字符串

hmac-predicate

Tower 查询参数 HMAC 验证断言

8 个版本 (5 个重大更新)

0.6.0 2024 年 8 月 18 日
0.5.0 2024 年 8 月 18 日
0.4.0 2024 年 8 月 14 日
0.3.2 2023 年 8 月 19 日
0.1.0 2023 年 8 月 18 日

#12 in #查询参数

Download history 3/week @ 2024-06-02 25/week @ 2024-06-09 8/week @ 2024-06-16 1/week @ 2024-06-30 119/week @ 2024-08-11 224/week @ 2024-08-18

每月 343 次下载

GPL-3.0 或更高版本

9KB
99

使用类似

use axum::error_handling::HandleErrorLayer;
use axum::Router;
use hmac_predicate::HmacQueryParamValidator;
use reqwest::StatusCode;
use tower::{BoxError, ServiceBuilder};

#[tokio::main]
async fn main() {
	let predicate: HmacQueryParamValidator = HmacQueryParamValidator {
		key: API_SECRET.to_string(),
	};

	let builder = ServiceBuilder::new()
		.layer(HandleErrorLayer::new(handle_error))
		.filter(predicate);

	let app = Router::new()
		.route("/", get(handler))
		.layer(builder);
}

async fn handle_error(err: BoxError) -> (StatusCode, String) {
	(
		StatusCode::INTERNAL_SERVER_ERROR,
		format!("Unhandled internal error: {}", err),
	)
}

依赖

~2.2–3MB
~59K SLoC