From 197b267e71e0315410fd954790bb8d945c835d32 Mon Sep 17 00:00:00 2001 From: EightMonth Date: Thu, 24 Oct 2024 09:15:06 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1demo=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg-cloud-test-seata/db/seata.sql | 146 +++++++++--------- .../src/main/resources/application.yml | 19 +-- .../src/main/resources/application.yml | 20 +-- .../src/main/resources/application.yml | 21 +-- jeecg-boot/pom.xml | 6 - 5 files changed, 94 insertions(+), 118 deletions(-) diff --git a/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/db/seata.sql b/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/db/seata.sql index d9c97666..eab85b2d 100644 --- a/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/db/seata.sql +++ b/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/db/seata.sql @@ -1,79 +1,77 @@ -/* - Navicat Premium Data Transfer - - Source Server : localhost - Source Server Type : MariaDB - Source Server Version : 100316 - Source Host : localhost:3300 - Source Schema : seata - - Target Server Type : MariaDB - Target Server Version : 100316 - File Encoding : 65001 - - Date: 05/01/2022 20:25:07 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; +-- -------------------------------- The script used when storeMode is 'db' -------------------------------- +-- the table to store GlobalSession data +DROP TABLE IF EXISTS `global_table`; +CREATE TABLE IF NOT EXISTS `global_table` +( + `xid` VARCHAR(128) NOT NULL, + `transaction_id` BIGINT, + `status` TINYINT NOT NULL, + `application_id` VARCHAR(32), + `transaction_service_group` VARCHAR(32), + `transaction_name` VARCHAR(128), + `timeout` INT, + `begin_time` BIGINT, + `application_data` VARCHAR(2000), + `gmt_create` DATETIME, + `gmt_modified` DATETIME, + PRIMARY KEY (`xid`), + KEY `idx_status_gmt_modified` (`status` , `gmt_modified`), + KEY `idx_transaction_id` (`transaction_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4; --- ---------------------------- --- Table structure for branch_table --- ---------------------------- +-- the table to store BranchSession data DROP TABLE IF EXISTS `branch_table`; -CREATE TABLE `branch_table` ( - `branch_id` bigint(20) NOT NULL, - `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `transaction_id` bigint(20) NULL DEFAULT NULL, - `resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `status` tinyint(4) NULL DEFAULT NULL, - `client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `gmt_create` datetime(6) NULL DEFAULT NULL, - `gmt_modified` datetime(6) NULL DEFAULT NULL, - PRIMARY KEY (`branch_id`) USING BTREE, - INDEX `idx_xid`(`xid`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Table structure for global_table --- ---------------------------- -DROP TABLE IF EXISTS `global_table`; -CREATE TABLE `global_table` ( - `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `transaction_id` bigint(20) NULL DEFAULT NULL, - `status` tinyint(4) NOT NULL, - `application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `transaction_service_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `timeout` int(11) NULL DEFAULT NULL, - `begin_time` bigint(20) NULL DEFAULT NULL, - `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `gmt_create` datetime(0) NULL DEFAULT NULL, - `gmt_modified` datetime(0) NULL DEFAULT NULL, - PRIMARY KEY (`xid`) USING BTREE, - INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE, - INDEX `idx_transaction_id`(`transaction_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +CREATE TABLE IF NOT EXISTS `branch_table` +( + `branch_id` BIGINT NOT NULL, + `xid` VARCHAR(128) NOT NULL, + `transaction_id` BIGINT, + `resource_group_id` VARCHAR(32), + `resource_id` VARCHAR(256), + `branch_type` VARCHAR(8), + `status` TINYINT, + `client_id` VARCHAR(64), + `application_data` VARCHAR(2000), + `gmt_create` DATETIME(6), + `gmt_modified` DATETIME(6), + PRIMARY KEY (`branch_id`), + KEY `idx_xid` (`xid`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4; --- ---------------------------- --- Table structure for lock_table --- ---------------------------- +-- the table to store lock data DROP TABLE IF EXISTS `lock_table`; -CREATE TABLE `lock_table` ( - `row_key` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `xid` varchar(96) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `transaction_id` bigint(20) NULL DEFAULT NULL, - `branch_id` bigint(20) NOT NULL, - `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `table_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `pk` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `gmt_create` datetime(0) NULL DEFAULT NULL, - `gmt_modified` datetime(0) NULL DEFAULT NULL, - PRIMARY KEY (`row_key`) USING BTREE, - INDEX `idx_branch_id`(`branch_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +CREATE TABLE IF NOT EXISTS `lock_table` +( + `row_key` VARCHAR(128) NOT NULL, + `xid` VARCHAR(128), + `transaction_id` BIGINT, + `branch_id` BIGINT NOT NULL, + `resource_id` VARCHAR(256), + `table_name` VARCHAR(32), + `pk` VARCHAR(36), + `status` TINYINT NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking', + `gmt_create` DATETIME, + `gmt_modified` DATETIME, + PRIMARY KEY (`row_key`), + KEY `idx_status` (`status`), + KEY `idx_branch_id` (`branch_id`), + KEY `idx_xid` (`xid`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4; + +DROP TABLE IF EXISTS `distributed_lock`; +CREATE TABLE IF NOT EXISTS `distributed_lock` +( + `lock_key` CHAR(20) NOT NULL, + `lock_value` VARCHAR(20) NOT NULL, + `expire` BIGINT, + primary key (`lock_key`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4; -SET FOREIGN_KEY_CHECKS = 1; +INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0); +INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0); +INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0); +INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/resources/application.yml b/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/resources/application.yml index 7dccda6e..9df3c2e8 100644 --- a/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/resources/application.yml +++ b/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-account/src/main/resources/application.yml @@ -15,25 +15,20 @@ spring: main: allow-bean-definition-overriding: true autoconfigure: - exclude: com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure + exclude: com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration datasource: - dynamic: - seata: true # 开启对 seata的支持 - primary: account - datasource: - account: - url: jdbc:mysql://127.0.0.1:3306/jeecg_account?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true - username: root - password: root - driver-class-name: com.mysql.cj.jdbc.Driver - schema: classpath:sql/schema-account.sql + url: jdbc:mysql://127.0.0.1:3306/jeecg_account?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + schema: classpath:sql/schema-account.sql cloud: nacos: config: import-check: enabled: false seata: - enable-auto-data-source-proxy: true +# enable-auto-data-source-proxy: true service: grouplist: default: 127.0.0.1:8091 diff --git a/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/resources/application.yml b/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/resources/application.yml index 3225e173..f1e69de6 100644 --- a/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/resources/application.yml +++ b/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-order/src/main/resources/application.yml @@ -15,26 +15,20 @@ spring: main: allow-bean-definition-overriding: true autoconfigure: - exclude: com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure + exclude: com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration datasource: - dynamic: - primary: order - seata: true # 开启对 seata的支持 - datasource: - # 设置 账号数据源配置 - order: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/jeecg_order?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useSSL=false - username: root - password: root - schema: classpath:sql/schema-order.sql + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/jeecg_order?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useSSL=false + username: root + password: root + schema: classpath:sql/schema-order.sql cloud: nacos: config: import-check: enabled: false seata: - enable-auto-data-source-proxy: false +# enable-auto-data-source-proxy: false service: grouplist: default: 127.0.0.1:8091 diff --git a/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/resources/application.yml b/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/resources/application.yml index c7c626c1..1bae3166 100644 --- a/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/resources/application.yml +++ b/jeecg-boot/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-seata/jeecg-cloud-test-seata-product/src/main/resources/application.yml @@ -14,26 +14,21 @@ spring: name: seata-product main: allow-bean-definition-overriding: true + autoconfigure: + exclude: com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration datasource: - dynamic: - primary: product - seata: true # 开启对 seata的支持 - seata-mode: AT #支持XA及AT模式,默认AT - datasource: - # 设置 账号数据源配置 - product: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/jeecg_product?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useSSL=false - username: root - password: root - schema: classpath:sql/schema-product.sql + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/jeecg_product?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useSSL=false + username: root + password: root + schema: classpath:sql/schema-product.sql cloud: nacos: config: import-check: enabled: false seata: - enable-auto-data-source-proxy: false +# enable-auto-data-source-proxy: false service: grouplist: default: 127.0.0.1:8091 diff --git a/jeecg-boot/pom.xml b/jeecg-boot/pom.xml index 5b35f675..260f12a2 100644 --- a/jeecg-boot/pom.xml +++ b/jeecg-boot/pom.xml @@ -36,7 +36,6 @@ 2022.0.4 2022.0.0.0 2.0.4 - 1.5.2 2.4.1 2.0.43 @@ -171,11 +170,6 @@ pom import - - io.seata - seata-spring-boot-starter - ${seata.version} - From b60942aa86c382420b0ba9dfeb0242fc78ccc571 Mon Sep 17 00:00:00 2001 From: EightMonth Date: Thu, 24 Oct 2024 10:48:00 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1demo=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/security/JeecgAuthenticationConvert.java | 8 +++++--- .../jeecg/config/security/JeecgPermissionService.java | 10 +++++++--- .../security/app/AppGrantAuthenticationProvider.java | 2 ++ .../password/PasswordGrantAuthenticationProvider.java | 2 ++ .../phone/PhoneGrantAuthenticationProvider.java | 2 ++ .../security/self/SelfAuthenticationProvider.java | 5 ++--- .../social/SocialGrantAuthenticationProvider.java | 2 ++ 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/JeecgAuthenticationConvert.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/JeecgAuthenticationConvert.java index d7c3c213..321f2157 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/JeecgAuthenticationConvert.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/JeecgAuthenticationConvert.java @@ -1,8 +1,9 @@ package org.jeecg.config.security; -import lombok.RequiredArgsConstructor; import org.jeecg.common.api.CommonAPI; import org.jeecg.common.system.vo.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.core.convert.converter.Converter; import org.springframework.security.authentication.AbstractAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -18,10 +19,11 @@ import java.util.ArrayList; * @date 2024/7/15 11:05 */ @Component -@RequiredArgsConstructor public class JeecgAuthenticationConvert implements Converter { - private final CommonAPI commonAPI; + @Lazy + @Autowired + private CommonAPI commonAPI; @Override public AbstractAuthenticationToken convert(Jwt source) { diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/JeecgPermissionService.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/JeecgPermissionService.java index 46a5d3b1..8beaab02 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/JeecgPermissionService.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/JeecgPermissionService.java @@ -7,6 +7,8 @@ import org.jeecg.common.api.CommonAPI; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.RedisUtil; import org.jeecg.config.security.utils.SecureUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.util.PatternMatchUtils; import org.springframework.util.StringUtils; @@ -21,14 +23,16 @@ import java.util.Set; * @date 2024/1/10 17:00 */ @Service("jps") -@AllArgsConstructor @Slf4j public class JeecgPermissionService { private final String SPLIT = "::"; private final String PERM_PREFIX = "jps" + SPLIT; - private final CommonAPI commonAPI; - private final RedisUtil redisUtil; + @Lazy + @Autowired + private CommonAPI commonAPI; + @Autowired + private RedisUtil redisUtil; /** * 判断接口是否有任意xxx,xxx权限 diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/app/AppGrantAuthenticationProvider.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/app/AppGrantAuthenticationProvider.java index 7d36f07a..ccf2f03b 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/app/AppGrantAuthenticationProvider.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/app/AppGrantAuthenticationProvider.java @@ -17,6 +17,7 @@ import org.jeecg.config.JeecgBaseConfig; import org.jeecg.config.security.password.PasswordGrantAuthenticationToken; import org.jeecg.modules.base.service.BaseCommonService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -55,6 +56,7 @@ public class AppGrantAuthenticationProvider implements AuthenticationProvider { private final OAuth2AuthorizationService authorizationService; private final OAuth2TokenGenerator tokenGenerator; + @Lazy @Autowired private CommonAPI commonAPI; @Autowired diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/password/PasswordGrantAuthenticationProvider.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/password/PasswordGrantAuthenticationProvider.java index d5c0a287..e3341df6 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/password/PasswordGrantAuthenticationProvider.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/password/PasswordGrantAuthenticationProvider.java @@ -16,6 +16,7 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.config.JeecgBaseConfig; import org.jeecg.modules.base.service.BaseCommonService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -56,6 +57,7 @@ public class PasswordGrantAuthenticationProvider implements AuthenticationProvid private final OAuth2AuthorizationService authorizationService; private final OAuth2TokenGenerator tokenGenerator; + @Lazy @Autowired private CommonAPI commonAPI; @Autowired diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/phone/PhoneGrantAuthenticationProvider.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/phone/PhoneGrantAuthenticationProvider.java index ec73cec1..ffe0e36d 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/phone/PhoneGrantAuthenticationProvider.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/phone/PhoneGrantAuthenticationProvider.java @@ -16,6 +16,7 @@ import org.jeecg.config.JeecgBaseConfig; import org.jeecg.config.security.password.PasswordGrantAuthenticationToken; import org.jeecg.modules.base.service.BaseCommonService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -53,6 +54,7 @@ public class PhoneGrantAuthenticationProvider implements AuthenticationProvider private final OAuth2AuthorizationService authorizationService; private final OAuth2TokenGenerator tokenGenerator; + @Lazy @Autowired private CommonAPI commonAPI; @Autowired diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/self/SelfAuthenticationProvider.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/self/SelfAuthenticationProvider.java index 3a0b53a7..c031d427 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/self/SelfAuthenticationProvider.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/self/SelfAuthenticationProvider.java @@ -1,17 +1,15 @@ package org.jeecg.config.security.self; -import com.alibaba.fastjson.JSONObject; import org.jeecg.common.api.CommonAPI; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.exception.JeecgBoot401Exception; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.common.system.vo.SysDepartModel; import org.jeecg.common.util.RedisUtil; -import org.jeecg.common.util.oConvertUtils; import org.jeecg.config.JeecgBaseConfig; import org.jeecg.modules.base.service.BaseCommonService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -48,6 +46,7 @@ public class SelfAuthenticationProvider implements AuthenticationProvider { private final OAuth2AuthorizationService authorizationService; private final OAuth2TokenGenerator tokenGenerator; + @Lazy @Autowired private CommonAPI commonAPI; @Autowired diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/social/SocialGrantAuthenticationProvider.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/social/SocialGrantAuthenticationProvider.java index 9349f4dc..74847827 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/social/SocialGrantAuthenticationProvider.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/social/SocialGrantAuthenticationProvider.java @@ -15,6 +15,7 @@ import org.jeecg.config.JeecgBaseConfig; import org.jeecg.config.security.password.PasswordGrantAuthenticationToken; import org.jeecg.modules.base.service.BaseCommonService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -51,6 +52,7 @@ public class SocialGrantAuthenticationProvider implements AuthenticationProvider private final OAuth2AuthorizationService authorizationService; private final OAuth2TokenGenerator tokenGenerator; + @Lazy @Autowired private CommonAPI commonAPI; @Autowired From 65bde3331b367dccfe09f234b3c495e3d5f10857 Mon Sep 17 00:00:00 2001 From: EightMonth Date: Wed, 20 Nov 2024 11:08:53 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D#7459=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dsas=E5=88=86=E6=94=AF=20@ignoreauth=E6=B3=A8=E8=A7=A3?= =?UTF-8?q?=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/jeecg/config/security/SecurityConfig.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/SecurityConfig.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/SecurityConfig.java index d2ef0ead..f595bd17 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/SecurityConfig.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/security/SecurityConfig.java @@ -16,6 +16,7 @@ import org.jeecg.config.security.phone.PhoneGrantAuthenticationConvert; import org.jeecg.config.security.phone.PhoneGrantAuthenticationProvider; import org.jeecg.config.security.social.SocialGrantAuthenticationConvert; import org.jeecg.config.security.social.SocialGrantAuthenticationProvider; +import org.jeecg.config.shiro.ignore.InMemoryIgnoreAuth; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; @@ -42,6 +43,8 @@ import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.springframework.security.web.util.matcher.MediaTypeRequestMatcher; +import org.springframework.security.web.util.matcher.RequestMatcher; +import org.springframework.util.CollectionUtils; import org.springframework.web.cors.CorsConfiguration; import java.security.KeyPair; @@ -50,6 +53,7 @@ import java.security.SecureRandom; import java.security.interfaces.ECPrivateKey; import java.security.interfaces.ECPublicKey; import java.util.Arrays; +import java.util.stream.Collectors; /** * spring authorization server核心配置 @@ -102,6 +106,7 @@ public class SecurityConfig { http //设置所有请求都需要认证,未认证的请求都被重定向到login页面进行登录 .authorizeHttpRequests((authorize) -> authorize + .requestMatchers(InMemoryIgnoreAuth.get().stream().map(AntPathRequestMatcher::antMatcher).toList().toArray(new AntPathRequestMatcher[0])).permitAll() .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/cas/client/validateLogin")).permitAll() .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/randomImage/**")).permitAll() .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/checkCaptcha")).permitAll()