核心工具(forge-starter-core)
工程位置:forge-server/forge-framework/forge-starter-parent/forge-starter-core。Maven artifactId 是 forge-starter-core。src/main/java 里有 33 个 Java 文件。
引入
xml
<dependency>
<groupId>com.mdframe.forge</groupId>
<artifactId>forge-starter-core</artifactId>
</dependency>自动装配
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 登记了:
com.mdframe.forge.starter.core.config.ExceptionAutoConfigurationcom.mdframe.forge.starter.core.config.JacksonConfig
配置属性
forge.demo(com.mdframe.forge.starter.core.context.DemoProperties)
| 字段 | 类型 | 类内默认值 | 说明 |
|---|---|---|---|
enabled | Boolean | false | 是否启用演示模式 |
message | String | "演示环境禁止修改操作" | 演示环境提示消息 |
whitelistUrls | List<String> | new ArrayList<>() | 白名单URL列表(支持通配符) |
blockedMethods | List<String> | Arrays.asList( "POST", "PUT", "DELETE", "PATCH" ) | 拦截的HTTP方法 |
forge.auth(com.mdframe.forge.starter.core.context.AuthProperties)
| 字段 | 类型 | 类内默认值 | 说明 |
|---|---|---|---|
enableApiPermission | Boolean | true | 是否启用API接口权限校验 默认启用 |
apiPermissionExcludePaths | String[] | new String[]{ "/auth/**" } | API权限校验排除路径(支持通配符) |
enableLoginLock | Boolean | true | 是否启用登录失败锁定功能 默认启用 |
maxLoginAttempts | Integer | 4 | 最大登录失败尝试次数 默认4次,可通过 sys_config 配置覆盖 |
lockDuration | Long | 30L | 账号锁定时长(分钟) 默认30分钟,可通过 sys_config 配置覆盖 |
failRecordExpire | Long | 15L | 登录失败记录保留时长(分钟) 在此时间内的失败次数会累计 默认15分钟 |
sameAccountLoginStrategy | String | "replace_old" | 同一账号登录策略 - allow_concurrent: 允许并发登录 - replace_old: 新登录踢出旧登录(默认) - reject_new: 拒绝新登录 |
enableOnlineUserManagement | Boolean | true | 是否启用在线用户管理 默认启用 |
enableClientValidation | Boolean | true | 客户端验证兼容配置。 |
enableLegacyClientSecretRead | Boolean | true | 是否允许读取历史明文客户端密钥。 完成存量盘点和机会式升级后应关闭。 |
forge.crypto(com.mdframe.forge.starter.core.context.CryptoProperties)
| 字段 | 类型 | 类内默认值 | 说明 |
|---|---|---|---|
enabled | Boolean | true | 是否启用加密功能 |
algorithm | String | "SM4" | 默认加密算法 (SM4/AES) |
secretKey | String | — | 对称加密密钥 (Base64编码,16字节) 当启用动态密钥时,此配置作为降级方案 |
enableDynamicKey | Boolean | true | 是否启用动态密钥协商 |
rsaPublicKey | String | — | RSA 公钥(Base64编码,可选,不配置则自动生成) |
rsaPrivateKey | String | — | RSA 私钥(Base64编码,可选,不配置则自动生成) |
sessionKeyExpire | Long | 7200L | 会话密钥过期时间(秒),默认2小时 |
enableApiCrypto | Boolean | true | 是否启用API级加解密 |
enableFieldCrypto | Boolean | true | 是否启用字段级加解密 |
enableReplayProtection | Boolean | false | 是否启用防重放攻击保护 |
replayTimeWindow | Long | 300L | 防重放时间窗口(秒) |
replayIncludePaths | List<String> | new ArrayList<>() | 防重放包含路径 |
replayExcludePaths | List<String> | new ArrayList<>(List.of( "/auth/captcha", "/auth/captcha/**", "/auth/loginConfig", "/crypto/public-key" )) | 防重放排除路径(默认排除验证码相关接口) |
excludePaths | List<String> | new ArrayList<>() | API加解密排除路径 |
enableDesensitize | Boolean | true | 是否启用字段脱敏 |
persistence | PersistenceProperties | new PersistenceProperties() | 持久化密文密钥配置。只服务数据库持久化密文,不改变浏览器会话密钥协议。 |
enabled | Boolean | true | 是否启用持久化密文服务 |
writeVersioned | Boolean | false | 是否写入 FPC1 版本化密文。首次兼容发布默认 false。 |
legacyReadEnabled | Boolean | true | 是否允许读取旧无版本密文 |
activeKeyId | String | — | 新写入使用的活动 keyId |
activeKey | String | — | 新写入使用的活动密钥,Base64 编码 |
legacyKey | String | — | 旧无版本密文兼容密钥,Base64 编码 |
keys | Map<String, String> | new LinkedHashMap<>() | 历史解密密钥,key 为 keyId,value 为 Base64 编码密钥 |
forge.log(com.mdframe.forge.starter.core.context.LogProperties)
| 字段 | 类型 | 类内默认值 | 说明 |
|---|---|---|---|
enableOperationLog | Boolean | true | 是否启用操作日志 |
enableLoginLog | Boolean | true | 是否启用登录日志 |
requestParamsMaxLength | Integer | 2000 | 请求参数最大长度(超过则截断) |
responseResultMaxLength | Integer | 2000 | 响应结果最大长度(超过则截断) |
excludePaths | String[] | new String[]{ "/auth/captcha", "/auth/login", "/auth/register", "/auth/changePassword", "/auth/resetPassword", "/auth/online/kickout", "/auth/online/batchKickout", "/oauth2/**", "/openapi/v1/capabilities/**", "/actuator/**", "/swagger-ui/**", "/v3/api-docs/**" } | 排除的URL路径(不记录操作日志) |
printOperationLog | Boolean | false | 是否在控制台打印操作日志 |
printLoginLog | Boolean | true | 是否在控制台打印登录日志 |
threadPoolCoreSize | Integer | 2 | 线程池核心线程数 |
threadPoolMaxSize | Integer | 5 | 线程池最大线程数 |
threadPoolQueueCapacity | Integer | 500 | 线程池队列容量 |
类内默认值不是官方启动配置。各服务 application.yml 可以覆盖。
注解
@IgnoreTenant
com.mdframe.forge.starter.core.annotation.tenant.IgnoreTenant
| 成员 | 类型 | 默认值 | 说明 |
|---|---|---|---|
value | boolean | true | 是否忽略租户 |
@ApiEncrypt
com.mdframe.forge.starter.core.annotation.crypto.ApiEncrypt
| 成员 | 类型 | 默认值 | 说明 |
|---|---|---|---|
algorithm | String | "" | 加密算法,默认使用配置文件中的算法 |
@ApiDecrypt
com.mdframe.forge.starter.core.annotation.crypto.ApiDecrypt
| 成员 | 类型 | 默认值 | 说明 |
|---|---|---|---|
algorithm | String | "" | 解密算法,默认使用配置文件中的算法 |
@RefreshScope
com.mdframe.forge.starter.core.annotation.config.RefreshScope
没有成员。
@ApiPermissionIgnore
com.mdframe.forge.starter.core.annotation.api.ApiPermissionIgnore
没有成员。
@OperationLog
com.mdframe.forge.starter.core.annotation.log.OperationLog
| 成员 | 类型 | 默认值 | 说明 |
|---|---|---|---|
module | String | "" | 操作模块 |
type | OperationType | OperationType.OTHER | 操作类型 |
desc | String | "" | 操作描述 |
saveRequestParams | boolean | true | 是否保存请求参数 |
saveResponseResult | boolean | true | 是否保存响应结果 |
源码类型清单
下面只列 forge-starter-core 自己的公开类型。
枚举
EnableStatusFlowEventTypeOperationType
类
AuthPropertiesBaseEntityBigNumberSerializerBusinessExceptionCryptoDeploymentSecretPolicyCryptoPropertiesDemoControllerDemoInterceptorDemoPropertiesDemoWebMvcConfigExceptionAutoConfigurationExceptionUtilExecutionIdentityContextHolderFlowEventMessageGlobalExceptionHandlerJacksonConfigLogPropertiesLoginUserPageParamResolverPageQueryRespInfoSensitiveDataUtilSessionHelper
