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
	
	 YunaiV
						YunaiV