🔧 权限属性配置单独放在配置文件中

This commit is contained in:
bunny 2025-06-01 20:32:41 +08:00
parent 34913542c0
commit 94f91c9157
4 changed files with 54 additions and 10 deletions

View File

@ -1,9 +1,10 @@
package cn.bunny.services.security.config; package cn.bunny.services.security.config;
import cn.bunny.services.security.config.property.AuthorityProperty;
import cn.bunny.services.security.handelr.SecurityAccessDeniedHandler; import cn.bunny.services.security.handelr.SecurityAccessDeniedHandler;
import cn.bunny.services.security.handelr.SecurityAuthenticationEntryPoint; import cn.bunny.services.security.handelr.SecurityAuthenticationEntryPoint;
import cn.bunny.services.security.service.CustomAuthorizationManagerServiceImpl; import cn.bunny.services.security.service.CustomAuthorizationManagerServiceImpl;
import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
@ -17,23 +18,28 @@ import org.springframework.security.web.util.matcher.RegexRequestMatcher;
@Configuration @Configuration
@EnableWebSecurity @EnableWebSecurity
@EnableMethodSecurity @EnableMethodSecurity
@RequiredArgsConstructor
public class WebSecurityConfig { public class WebSecurityConfig {
// 需要排出的无需验证的请求路径 // 需要排出的无需验证的请求路径
public static String[] annotations = { // public static String[] annotations = {
"/", "/ws/**", "/**.html", "/error", // "/" , "/ws/**" , "/**.html" , "/error" ,
"/media.ico", "/favicon.ico", "/webjars/**", "/v3/api-docs/**", "/swagger-ui/**", // "/media.ico" , "/favicon.ico" , "/webjars/**" , "/v3/api-docs/**" , "/swagger-ui/**" ,
"/*/*/login", "/*/local-file/**", "/*/*/public/**", // "/*/*/login" , "/*/local-file/**" , "/*/*/public/**" ,
}; // };
public static String[] annotations;
// 用户登录之后才能访问不能与接口名称重复不能与接口名称包含 // 用户登录之后才能访问不能与接口名称重复不能与接口名称包含
public static String[] userAuths = {"private"}; // public static String[] userAuths = {"private"};
public static String[] userAuths;
@Resource private final AuthorityProperty authorityProperty;
private CustomAuthorizationManagerServiceImpl customAuthorizationManagerService; private final CustomAuthorizationManagerServiceImpl customAuthorizationManagerService;
@Bean @Bean
public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
annotations = authorityProperty.getAnnotations();
userAuths = authorityProperty.getUserAuths();
httpSecurity httpSecurity
// 前端段分离不需要---禁用明文验证 // 前端段分离不需要---禁用明文验证

View File

@ -0,0 +1,20 @@
package cn.bunny.services.security.config.property;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Getter
@Setter
@Configuration
@ConfigurationProperties(prefix = "auth" )
public class AuthorityProperty {
/* 需要排出的无需验证的请求路径 */
private String[] annotations;
/* 用户登录之后才能访问,不能与接口名称重复和包含!!! */
private String[] userAuths;
}

View File

@ -0,0 +1,16 @@
auth:
annotations:
- /
- /ws/**
- /**.html
- /error
- /media.ico
- /favicon.ico
- /webjars/**
- /v3/api-docs/**
- /swagger-ui/**
- /*/*/login
- /*/local-file/**
- /*/*/public/**
user-auths:
- private

View File

@ -6,6 +6,8 @@ server:
spring: spring:
profiles: profiles:
active: @profiles.active@ active: @profiles.active@
include:
- auth
# main: # main:
# lazy-initialization: true # lazy-initialization: true
application: application: