5个版本 (3个破坏性更新)
0.4.0-beta.19 | 2022年1月7日 |
---|---|
0.4.0-beta.5 | 2021年6月5日 |
0.3.0 | 2020年9月25日 |
0.2.0 | 2020年8月4日 |
0.1.0 | 2020年8月3日 |
#1134 in HTTP服务器
每月下载量27
20KB
300 行
actix-web-middleware-cognito
为actix-web提供验证Cognito令牌的中间件。
Cognito验证器
在设置中间件之前,我们需要创建一个CognitoValidator
,它将通过接收一些环境变量来构建。
- COGNITO_REGION:Cognito池的区域。
- COGNITO_POOLID:Cognito池ID。
- COGNITO_CLIENTID:您的应用程序的客户端ID。
- COGNITO_ENABLED(可选):如果不存在或为0,则不进行验证。
- COGNITO_VERIFY_ACCESSTOKEN(可选):如果不存在或为0,则验证idToken。如果存在,则验证accessToken。
使用方法
设置中间件
// builidng the validator in order to be shared between all threads.
let cognito_validator =
Arc::new(CognitoValidator::create().expect("Cognito configuration error"));
HttpServer::new(move || {
// cognito middleware
let cognito = Cognito::new(cognito_validator.clone());
// set up the app
App::new()
.wrap(cognito)
.route("/", web::get().to(index))
})
.bind(format!("0.0.0.0:{}", PORT))
.unwrap_or_else(|_| panic!("🔥 Couldn't start the server at port {}", PORT))
.run()
.await
从请求中提取令牌
该库提供了一个CognitoInfo
提取器,您可以使用它来获取Cognito令牌的信息。如果令牌无效或禁用了中间件(通过省略COGNITO_ENABLED
环境变量),您将始终得到一个禁用的CognitoInfo
,即一个没有token
的CognitoInfo
。
async fn index(auth: CognitoInfo) -> impl Responder {
let msg = format!(
"User with id {} made this call with token {}",
auth.user.unwrap(),
auth.token.unwrap()
);
HttpResponse::Ok().body(msg)
}
示例
您可以在仓库中的example
中查看或运行它:cargo run --example main
。
依赖项
~21–34MB
~705K SLoC