diff --git a/common/service-utils/src/main/java/cn/bunny/common/service/config/MybatisPlusConfig.java b/common/service-utils/src/main/java/cn/bunny/common/service/config/MybatisPlusConfig.java
index 2938898..86bdd5c 100644
--- a/common/service-utils/src/main/java/cn/bunny/common/service/config/MybatisPlusConfig.java
+++ b/common/service-utils/src/main/java/cn/bunny/common/service/config/MybatisPlusConfig.java
@@ -14,7 +14,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
* Mybatis-Plus配置类
*/
@EnableTransactionManagement
-// @MapperScan("cn.bunny.service.mapper")
@Configuration
@Slf4j
public class MybatisPlusConfig {
diff --git a/common/spring-security/pom.xml b/common/spring-security/pom.xml
index 48c5390..1e09859 100644
--- a/common/spring-security/pom.xml
+++ b/common/spring-security/pom.xml
@@ -1,4 +1,4 @@
-
4.0.0
@@ -18,6 +18,15 @@
-
+
+ cn.bunny
+ service-utils
+ 0.0.1-SNAPSHOT
+
+
+ cn.bunny
+ service
+ 0.0.1-SNAPSHOT
+
diff --git a/common/spring-security/src/main/java/cn/bunny/security/config/DBUserDetailsManager.java b/common/spring-security/src/main/java/cn/bunny/security/config/DBUserDetailsManager.java
new file mode 100644
index 0000000..75ba303
--- /dev/null
+++ b/common/spring-security/src/main/java/cn/bunny/security/config/DBUserDetailsManager.java
@@ -0,0 +1,52 @@
+package cn.bunny.security.config;
+
+import cn.bunny.entity.system.SysUser;
+import cn.bunny.service.mapper.SysUserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.core.userdetails.UserDetailsPasswordService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.provisioning.UserDetailsManager;
+
+@Configuration
+public class DBUserDetailsManager implements UserDetailsManager, UserDetailsPasswordService {
+ @Autowired
+ private SysUserMapper userMapper;
+
+ @Override
+ public org.springframework.security.core.userdetails.UserDetails updatePassword(org.springframework.security.core.userdetails.UserDetails user, String newPassword) {
+ return null;
+ }
+
+ @Override
+ public void createUser(org.springframework.security.core.userdetails.UserDetails userDetails) {
+ SysUser sysUser = new SysUser();
+ sysUser.setName(userDetails.getUsername());
+ sysUser.setPassword(userDetails.getPassword());
+ }
+
+ @Override
+ public void updateUser(org.springframework.security.core.userdetails.UserDetails user) {
+
+ }
+
+ @Override
+ public void deleteUser(String username) {
+
+ }
+
+ @Override
+ public void changePassword(String oldPassword, String newPassword) {
+
+ }
+
+ @Override
+ public boolean userExists(String username) {
+ return false;
+ }
+
+ @Override
+ public org.springframework.security.core.userdetails.UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+ return null;
+ }
+}
diff --git a/common/spring-security/src/main/java/cn/bunny/security/config/WebSecurityConfig.java b/common/spring-security/src/main/java/cn/bunny/security/config/WebSecurityConfig.java
new file mode 100644
index 0000000..dd58a87
--- /dev/null
+++ b/common/spring-security/src/main/java/cn/bunny/security/config/WebSecurityConfig.java
@@ -0,0 +1,27 @@
+package cn.bunny.security.config;
+
+import cn.bunny.security.custom.CustomPasswordEncoder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.web.SecurityFilterChain;
+
+@Configuration
+@EnableWebSecurity
+@EnableMethodSecurity
+public class WebSecurityConfig {
+ @Autowired
+ private UserDetailsService userDetailsService;
+ @Autowired
+ private CustomPasswordEncoder customPasswordEncoder;
+
+ @Bean
+ public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
+
+ return httpSecurity.build();
+ }
+}
diff --git a/common/spring-security/src/main/java/cn/bunny/security/custom/CustomPasswordEncoder.java b/common/spring-security/src/main/java/cn/bunny/security/custom/CustomPasswordEncoder.java
new file mode 100644
index 0000000..61fddfd
--- /dev/null
+++ b/common/spring-security/src/main/java/cn/bunny/security/custom/CustomPasswordEncoder.java
@@ -0,0 +1,29 @@
+package cn.bunny.security.custom;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configurers.PasswordManagementConfigurer;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.util.DigestUtils;
+
+/**
+ * 自定义密码加密比对
+ */
+@Configuration
+public class CustomPasswordEncoder implements PasswordEncoder, Customizer> {
+
+ @Override
+ public String encode(CharSequence rawPassword) {
+ return DigestUtils.md5DigestAsHex(rawPassword.toString().getBytes());
+ }
+
+ @Override
+ public boolean matches(CharSequence rawPassword, String encodedPassword) {
+ return encodedPassword.matches(DigestUtils.md5DigestAsHex(rawPassword.toString().getBytes()));
+ }
+
+ @Override
+ public void customize(PasswordManagementConfigurer httpSecurityPasswordManagementConfigurer) {
+ }
+}
diff --git a/common/spring-security/src/main/java/cn/bunny/security/custom/CustomUser.java b/common/spring-security/src/main/java/cn/bunny/security/custom/CustomUser.java
new file mode 100644
index 0000000..35654c9
--- /dev/null
+++ b/common/spring-security/src/main/java/cn/bunny/security/custom/CustomUser.java
@@ -0,0 +1,20 @@
+package cn.bunny.security.custom;
+
+import cn.bunny.entity.system.SysUser;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.User;
+
+import java.util.Collection;
+
+@Getter
+@Setter
+public class CustomUser extends User {
+ private SysUser sysUser;
+
+ public CustomUser(SysUser sysUser, Collection extends GrantedAuthority> authorities) {
+ super(sysUser.getUsername(), sysUser.getPassword(), authorities);
+ this.sysUser = sysUser;
+ }
+}
\ No newline at end of file
diff --git a/common/spring-security/src/main/java/cn/bunny/security/handelr/SecurityAccessDeniedHandler.java b/common/spring-security/src/main/java/cn/bunny/security/handelr/SecurityAccessDeniedHandler.java
new file mode 100644
index 0000000..299d808
--- /dev/null
+++ b/common/spring-security/src/main/java/cn/bunny/security/handelr/SecurityAccessDeniedHandler.java
@@ -0,0 +1,24 @@
+package cn.bunny.security.handelr;
+
+import cn.bunny.common.service.result.Result;
+import cn.bunny.enums.ResultCodeEnum;
+import com.alibaba.fastjson2.JSON;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.access.AccessDeniedException;
+
+import java.io.IOException;
+
+public class SecurityAccessDeniedHandler implements org.springframework.security.web.access.AccessDeniedHandler {
+ @Override
+ public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
+ Result