Skip to content

Commit 5d29291

Browse files
committed
refactor: 抽取 Security 配置项到 SecurityProperties
1 parent 94a552d commit 5d29291

3 files changed

Lines changed: 45 additions & 28 deletions

File tree

framework/src/main/java/com/github/cadecode/uniboot/framework/config/SecurityConfig.java

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cn.hutool.core.collection.CollUtil;
44
import cn.hutool.core.util.ArrayUtil;
5+
import com.github.cadecode.uniboot.framework.config.SecurityConfig.SecurityProperties;
56
import com.github.cadecode.uniboot.framework.enums.AuthModelEnum;
67
import com.github.cadecode.uniboot.framework.security.LoginSuccessHandler;
78
import com.github.cadecode.uniboot.framework.security.TokenAuthFilter;
@@ -14,6 +15,7 @@
1415
import lombok.RequiredArgsConstructor;
1516
import lombok.extern.slf4j.Slf4j;
1617
import org.springframework.boot.context.properties.ConfigurationProperties;
18+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1719
import org.springframework.context.annotation.Bean;
1820
import org.springframework.context.annotation.Configuration;
1921
import org.springframework.http.HttpMethod;
@@ -46,25 +48,10 @@
4648
@RequiredArgsConstructor
4749
@EnableWebSecurity
4850
@EnableGlobalMethodSecurity(prePostEnabled = true)
51+
@EnableConfigurationProperties(SecurityProperties.class)
4952
@Configuration
50-
@ConfigurationProperties("uni-boot.security")
5153
public class SecurityConfig {
5254

53-
/**
54-
* 鉴权模式
55-
*/
56-
private AuthModelEnum authModel;
57-
58-
/**
59-
* 忽略鉴权的 url
60-
*/
61-
private List<String> ignoreUrls;
62-
63-
/**
64-
* JWT Token 配置
65-
*/
66-
private TokenConfig token;
67-
6855
/**
6956
* 登录路径
7057
*/
@@ -81,6 +68,11 @@ public class SecurityConfig {
8168
*/
8269
public static final String LOGOUT_URL = "/logout";
8370

71+
/**
72+
* 配置项
73+
*/
74+
private final SecurityProperties properties;
75+
8476
/**
8577
* 注入各种处理器
8678
*/
@@ -159,7 +151,7 @@ protected void configure(HttpSecurity http) throws Exception {
159151
.failureHandler(loginFailureHandler);
160152
// 配置 Token 校验过滤器
161153
http.addFilterBefore(tokenAuthFilter, UsernamePasswordAuthenticationFilter.class);
162-
log.info("Config Security over,AuthModel:{}", authModel);
154+
log.info("Config Security over,AuthModel:{}", properties.getAuthModel());
163155
}
164156

165157
@Override
@@ -171,6 +163,7 @@ public void configure(WebSecurity web) {
171163
// 放行其他框架
172164
ignoring.antMatchers("/error", "/druid/**", "/actuator/**");
173165
// 设置忽略的路径
166+
List<String> ignoreUrls = properties.getIgnoreUrls();
174167
if (CollUtil.isNotEmpty(ignoreUrls)) {
175168
log.info("Config Security ignore urls:{}", ignoreUrls);
176169
ignoring.antMatchers(ArrayUtil.toArray(ignoreUrls, String.class));
@@ -179,6 +172,30 @@ public void configure(WebSecurity web) {
179172
};
180173
}
181174

175+
/**
176+
* Security 配置
177+
*/
178+
@Data
179+
@ConfigurationProperties("uni-boot.security")
180+
public static class SecurityProperties {
181+
182+
/**
183+
* 鉴权模式
184+
*/
185+
private AuthModelEnum authModel;
186+
187+
/**
188+
* 忽略鉴权的 url
189+
*/
190+
private List<String> ignoreUrls;
191+
192+
/**
193+
* JWT Token 配置
194+
*/
195+
private TokenConfig token;
196+
197+
}
198+
182199
/**
183200
* JWT 配置类
184201
*/

framework/src/main/java/com/github/cadecode/uniboot/framework/security/handler/SignOutSuccessHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
import com.github.cadecode.uniboot.common.plugin.cache.util.KeyGeneUtil;
1010
import com.github.cadecode.uniboot.common.plugin.cache.util.RedisUtil;
1111
import com.github.cadecode.uniboot.framework.config.SecurityConfig;
12+
import com.github.cadecode.uniboot.framework.config.SecurityConfig.SecurityProperties;
1213
import com.github.cadecode.uniboot.framework.consts.KeyPrefix;
1314
import com.github.cadecode.uniboot.framework.enums.AuthErrorEnum;
14-
import com.github.cadecode.uniboot.framework.security.TokenAuthFilter;
15-
import com.github.cadecode.uniboot.framework.security.filter.RedisTokenAuthFilter;
15+
import com.github.cadecode.uniboot.framework.enums.AuthModelEnum;
1616
import com.github.cadecode.uniboot.framework.util.SecurityUtil;
1717
import lombok.RequiredArgsConstructor;
1818
import org.springframework.security.core.Authentication;
@@ -32,14 +32,14 @@
3232
@Component
3333
public class SignOutSuccessHandler implements LogoutSuccessHandler {
3434

35-
private final TokenAuthFilter tokenAuthFilter;
35+
private final SecurityProperties properties;
3636

3737
@Override
3838
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response,
3939
Authentication authentication) {
4040
// 删除保存登录信息的 redis key
4141
String uuidToken = request.getHeader(SecurityUtil.getHeader());
42-
if (StrUtil.isNotEmpty(uuidToken) && tokenAuthFilter instanceof RedisTokenAuthFilter) {
42+
if (StrUtil.isNotEmpty(uuidToken) && properties.getAuthModel() == AuthModelEnum.REDIS) {
4343
String loginUserKey = KeyGeneUtil.key(KeyPrefix.LOGIN_USER, uuidToken);
4444
RedisUtil.del(loginUserKey);
4545
}

framework/src/main/java/com/github/cadecode/uniboot/framework/util/SecurityUtil.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import cn.hutool.core.lang.UUID;
44
import cn.hutool.core.util.ObjectUtil;
55
import com.github.cadecode.uniboot.framework.bean.dto.SysUserDto.SysUserDetailsDto;
6-
import com.github.cadecode.uniboot.framework.config.SecurityConfig;
6+
import com.github.cadecode.uniboot.framework.config.SecurityConfig.SecurityProperties;
77
import lombok.RequiredArgsConstructor;
88
import org.springframework.beans.factory.InitializingBean;
99
import org.springframework.security.core.Authentication;
@@ -25,22 +25,22 @@
2525
@Component
2626
public class SecurityUtil implements InitializingBean {
2727

28-
private static SecurityConfig SECURITY_CONFIG;
28+
private static SecurityProperties PROPERTIES;
2929

30-
private final SecurityConfig securityConfig;
30+
private final SecurityProperties properties;
3131

3232
// 从 SecurityConfig 获取 token 配置
3333

3434
public static String getHeader() {
35-
return SECURITY_CONFIG.getToken().getHeader();
35+
return PROPERTIES.getToken().getHeader();
3636
}
3737

3838
public static Long getExpiration() {
39-
return SECURITY_CONFIG.getToken().getExpiration();
39+
return PROPERTIES.getToken().getExpiration();
4040
}
4141

4242
public static String getSecret() {
43-
return SECURITY_CONFIG.getToken().getSecret();
43+
return PROPERTIES.getToken().getSecret();
4444
}
4545

4646
/**
@@ -114,6 +114,6 @@ public static String getUsername() {
114114

115115
@Override
116116
public void afterPropertiesSet() {
117-
SECURITY_CONFIG = securityConfig;
117+
PROPERTIES = properties;
118118
}
119119
}

0 commit comments

Comments
 (0)