bugfix:非 json 请求(文件上传)时,token 过期时,错误读取 request body 问题
parent
feb742e084
commit
9164fa0ffb
|
@ -93,11 +93,19 @@ public class ServletUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getBody(HttpServletRequest request) {
|
public static String getBody(HttpServletRequest request) {
|
||||||
return JakartaServletUtil.getBody(request);
|
// 只有在 json 请求在读取,因为只有 CacheRequestBodyFilter 才会进行缓存,支持重复读取
|
||||||
|
if (isJsonRequest(request)) {
|
||||||
|
return JakartaServletUtil.getBody(request);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] getBodyBytes(HttpServletRequest request) {
|
public static byte[] getBodyBytes(HttpServletRequest request) {
|
||||||
return JakartaServletUtil.getBodyBytes(request);
|
// 只有在 json 请求在读取,因为只有 CacheRequestBodyFilter 才会进行缓存,支持重复读取
|
||||||
|
if (isJsonRequest(request)) {
|
||||||
|
return JakartaServletUtil.getBodyBytes(request);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getClientIP(HttpServletRequest request) {
|
public static String getClientIP(HttpServletRequest request) {
|
||||||
|
|
|
@ -130,6 +130,7 @@ logging:
|
||||||
level:
|
level:
|
||||||
# 配置自己写的 MyBatis Mapper 打印日志
|
# 配置自己写的 MyBatis Mapper 打印日志
|
||||||
cn.iocoder.yudao.module.infra.dal.mysql: debug
|
cn.iocoder.yudao.module.infra.dal.mysql: debug
|
||||||
|
cn.iocoder.yudao.module.infra.dal.mysql.logger.ApiErrorLogMapper: INFO # 配置 ApiErrorLogMapper 的日志级别为 info,避免和 GlobalExceptionHandler 重复打印
|
||||||
cn.iocoder.yudao.module.infra.dal.mysql.file.FileConfigMapper: INFO # 配置 FileConfigMapper 的日志级别为 info
|
cn.iocoder.yudao.module.infra.dal.mysql.file.FileConfigMapper: INFO # 配置 FileConfigMapper 的日志级别为 info
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
|
@ -150,7 +150,6 @@ yudao:
|
||||||
ignore-tables:
|
ignore-tables:
|
||||||
- infra_codegen_column
|
- infra_codegen_column
|
||||||
- infra_codegen_table
|
- infra_codegen_table
|
||||||
- infra_test_demo
|
|
||||||
- infra_config
|
- infra_config
|
||||||
- infra_file_config
|
- infra_file_config
|
||||||
- infra_file
|
- infra_file
|
||||||
|
|
|
@ -6,7 +6,6 @@ DELETE FROM "infra_job_log";
|
||||||
DELETE FROM "infra_api_access_log";
|
DELETE FROM "infra_api_access_log";
|
||||||
DELETE FROM "infra_api_error_log";
|
DELETE FROM "infra_api_error_log";
|
||||||
DELETE FROM "infra_file_config";
|
DELETE FROM "infra_file_config";
|
||||||
DELETE FROM "infra_test_demo";
|
|
||||||
DELETE FROM "infra_data_source_config";
|
DELETE FROM "infra_data_source_config";
|
||||||
DELETE FROM "infra_codegen_table";
|
DELETE FROM "infra_codegen_table";
|
||||||
DELETE FROM "infra_codegen_column";
|
DELETE FROM "infra_codegen_column";
|
||||||
|
|
|
@ -146,21 +146,6 @@ CREATE TABLE IF NOT EXISTS "infra_api_error_log" (
|
||||||
primary key ("id")
|
primary key ("id")
|
||||||
) COMMENT '系统异常日志';
|
) COMMENT '系统异常日志';
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS "infra_test_demo" (
|
|
||||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
|
||||||
"name" varchar(100) NOT NULL,
|
|
||||||
"status" tinyint NOT NULL,
|
|
||||||
"type" tinyint NOT NULL,
|
|
||||||
"category" tinyint NOT NULL,
|
|
||||||
"remark" varchar(500),
|
|
||||||
"creator" varchar(64) DEFAULT '''',
|
|
||||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
"updater" varchar(64) DEFAULT '''',
|
|
||||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
||||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
|
||||||
PRIMARY KEY ("id")
|
|
||||||
) COMMENT '字典类型表';
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS "infra_data_source_config" (
|
CREATE TABLE IF NOT EXISTS "infra_data_source_config" (
|
||||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
"name" varchar(100) NOT NULL,
|
"name" varchar(100) NOT NULL,
|
||||||
|
|
|
@ -109,6 +109,7 @@ logging:
|
||||||
level:
|
level:
|
||||||
# 配置自己写的 MyBatis Mapper 打印日志
|
# 配置自己写的 MyBatis Mapper 打印日志
|
||||||
cn.iocoder.yudao.module.pay.dal.mysql: debug
|
cn.iocoder.yudao.module.pay.dal.mysql: debug
|
||||||
|
cn.iocoder.yudao.module.pay.dal.mysql.notify.PayNotifyTaskMapper: INFO # 配置 PayNotifyTaskMapper 的日志级别为 info
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.oauth2;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
@ -13,6 +14,7 @@ import java.util.List;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface OAuth2AccessTokenMapper extends BaseMapperX<OAuth2AccessTokenDO> {
|
public interface OAuth2AccessTokenMapper extends BaseMapperX<OAuth2AccessTokenDO> {
|
||||||
|
|
||||||
|
@TenantIgnore // 获取 token 的时候,需要忽略租户编号。原因是:一些场景下,可能不会传递 tenant-id 请求头,例如说文件上传、积木报表等等
|
||||||
default OAuth2AccessTokenDO selectByAccessToken(String accessToken) {
|
default OAuth2AccessTokenDO selectByAccessToken(String accessToken) {
|
||||||
return selectOne(OAuth2AccessTokenDO::getAccessToken, accessToken);
|
return selectOne(OAuth2AccessTokenDO::getAccessToken, accessToken);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue