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