修复jwt的token解析异常导致错误提示,优化登录日志记录,优化刷新token接口参数

This commit is contained in:
2026-08-07 09:51:44 +08:00
parent 21729c94f1
commit ca67220dcc
7 changed files with 95 additions and 49 deletions
@@ -186,6 +186,18 @@ public class AuthFilter extends BaseFilter implements Ordered, BootCommonConstan
// 校验登录白名单
if (checkLoginWhiteList(uri)) {
filterChain.doFilter(request, response);
// 记录登录日志
if (Objects.equals("/sys/login/passwd", uri)) {
LoginUserDto loginUser = AuthUtils.getDefNull();
if (loginUser == null) {
log.setTitle("系统登录-密码登录失败");
} else {
log.setAccountId(loginUser.getId());
log.setAccount(loginUser.getAccount());
log.setTitle("系统登录-密码登录成功");
}
saveOptLog(log);
}
return;
}
@@ -208,7 +220,8 @@ public class AuthFilter extends BaseFilter implements Ordered, BootCommonConstan
// 校验 uri 访问权限
String method = request.getMethod();
if (!PremUtils.checkInterfacePerm(uri, method, loginUser.getRoleIds())) {
saveOptLog(log, "URI访问权限校验失败");
log.setTitle("权限异常-URI访问权限校验失败");
saveOptLog(log);
HttpServletUtils.respWriter(response, JSONObject.from(new Result<>(ResultType.FORBIDDEN, null)));
return;
}
@@ -221,23 +234,21 @@ public class AuthFilter extends BaseFilter implements Ordered, BootCommonConstan
checkIgnoreMask();
CommonHolder.set(GET_SWAGGER_TAG, true);
filterChain.doFilter(request, response);
saveOptLog(log, null);
saveOptLog(log);
}
/**
* 保存操作日志
*
* @param log 日志
* @param memo 备注
* @param log 日志
*/
private void saveOptLog(OptLogDto log, String memo) {
Object tag = CommonHolder.get(SWAGGER_TAG);
if (Objects.nonNull(tag)) {
{
private void saveOptLog(OptLogDto log) {
if (StringUtils.isBlank(log.getTitle())) {
Object tag = CommonHolder.get(SWAGGER_TAG);
if (Objects.nonNull(tag)) {
log.setTitle(tag.toString());
}
}
log.setMemo(memo);
log.setGmtCreate(Instant.now());
LogBus.init(LogLevel.INFO, LogBusBaseType.OPT_LOG).data(log).save();
}
@@ -5,6 +5,9 @@ import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.JWTVerifier;
import xtools.app.sys.auth.config.AuthConfig;
import xtools.boot.core.utils.SpringContextUtils;
import xtools.boot.log.LogBus;
import xtools.boot.log.enums.LogBusBaseType;
import xtools.core.enums.LogLevel;
import xtools.extend.JwtUtils;
/**
@@ -64,7 +67,12 @@ public class AuthJwtUtils {
}
}
}
return JwtUtils.verifyToken(verifier, token);
try {
return JwtUtils.verifyToken(verifier, token);
} catch (Exception e) {
LogBus.init(LogLevel.WARN, LogBusBaseType.OTHER).title("Token验证失败").data(JSONObject.of("token", token)).error(e).print(false).save();
}
return JSONObject.of();
}
}
@@ -124,22 +124,6 @@ public class AuthUtils {
return HeaderUtils.getRequestParam(request, BootCommonConstant.UID);
}
/**
* 从Jwt 中获取 token
*
* @param jwt Jwt信息
* @param uid Uid
* @param id Id
* @return token
*/
public static String getTokenByJwt(String jwt, String uid, Long id) {
JSONObject jwtToken = AuthJwtUtils.verifyToken(jwt);
if (checkJwtToken(jwtToken, uid, id)) {
return jwtToken.getString(JWT_TOKEN);
}
return null;
}
/**
* 验证 JwtToken
*
@@ -152,10 +136,7 @@ public class AuthUtils {
if (!Objects.equals(jwtToken.getString(UID), uid)) {
return false;
}
if (!Objects.equals(jwtToken.getLong(USER), id)) {
return false;
}
return true;
return Objects.equals(jwtToken.getLong(USER), id);
}
/**