使用ResErr封装request context中间件错误信息

This commit is contained in:
李运家 2024-09-27 19:56:15 +08:00
parent 0d8802b495
commit 468bf8578f

View File

@ -3,7 +3,7 @@ use http::{header, StatusCode};
use i18n::{message, message_ids::MessageId};
use jsonwebtoken::{decode, DecodingKey, Validation};
use crate::{cache::account_cache::LOGIN_CACHE, config, context::{Context, WhiteContext}, token::Claims};
use crate::{cache::account_cache::LOGIN_CACHE, config, context::{Context, WhiteContext}, model::response::ResErr, token::Claims};
const WHITE_LIST: &[(&str, &str)] = &[
("POST", "/account/sys"),
@ -43,13 +43,13 @@ pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
let parts: Vec<&str> = header_value.to_str().unwrap_or("").split_whitespace().collect();
if parts.len() != 2 || parts[0] != "Bearer" {
tracing::error!("无效的 authorization 请求头参数");
return (StatusCode::BAD_REQUEST, message!(&language, MessageId::BadRequest)).into_response();
return ResErr::params(message!(&language, MessageId::BadRequest)).into_response();
}
parts[1]
},
None => {
tracing::error!("缺少 authorization 请求头参数");
return (StatusCode::UNAUTHORIZED, message!(&language, MessageId::BadRequest)).into_response()
return ResErr::auth(message!(&language, MessageId::BadRequest)).into_response()
},
};
@ -60,7 +60,7 @@ pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
let account = LOGIN_CACHE.get(&decoded.claims.sub).await;
if account.is_none() {
tracing::error!("无效的 token");
return (StatusCode::UNAUTHORIZED, message!(&language, MessageId::BadRequest)).into_response();
return ResErr::auth(message!(&language, MessageId::BadRequest)).into_response();
}
let account = account.unwrap();
// 判断token是否有效(注释掉,如果服务因为升级等原因手动重启了,缓存的数据也不再存在)
@ -78,7 +78,7 @@ pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
},
Err(_) => {
tracing::error!("无效的 token");
return (StatusCode::UNAUTHORIZED, message!(&language, MessageId::BadRequest)).into_response();
return ResErr::auth(message!(&language, MessageId::BadRequest)).into_response();
}
}
}