使用ResErr封装request context中间件错误信息
This commit is contained in:
parent
0d8802b495
commit
468bf8578f
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user