完善登录用户的token校验

This commit is contained in:
李运家 2024-10-14 19:43:52 +08:00
parent c837466536
commit 2d8b67bebb

View File

@ -58,17 +58,17 @@ pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
// 从缓存中获取当前用户信息 // 从缓存中获取当前用户信息
let account = LOGIN_ACCOUNT_CACHE.get(&decoded.claims.sub).await; let account = LOGIN_ACCOUNT_CACHE.get(&decoded.claims.sub).await;
if account.is_none() { if account.is_none() {
tracing::error!("无效的 token"); tracing::error!("无效的 token, 无缓存的登陆用户信息");
// 解析语言 // 解析语言
let language = request_util::get_lang_tag(req.headers()); let language = request_util::get_lang_tag(req.headers());
return ResErr::auth(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是否有效
// let account = account.unwrap(); if account.token != Arc::new(String::from(token)) {
// if account.token != token { tracing::error!("无效的 token, 缓存的登陆用户信息和token不一致");
// return (StatusCode::UNAUTHORIZED, "Invalid token".to_string()).into_response(); return (hyper::StatusCode::UNAUTHORIZED, "Invalid token".to_string()).into_response();
// } }
let mut language = account.account.clone().lang_tag.clone(); let mut language = account.account.clone().lang_tag.clone();
if language.is_empty() { if language.is_empty() {
language = request_util::get_lang_tag(req.headers()); language = request_util::get_lang_tag(req.headers());
@ -83,7 +83,7 @@ pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
next.run(req).await next.run(req).await
}, },
Err(_) => { Err(_) => {
tracing::error!("无效的 token"); tracing::error!("无效的 token, 解析失败");
// 解析语言 // 解析语言
let language = request_util::get_lang_tag(req.headers()); let language = request_util::get_lang_tag(req.headers());
return ResErr::auth(message!(&language, MessageId::BadRequest)).into_response(); return ResErr::auth(message!(&language, MessageId::BadRequest)).into_response();