|
@@ -1,9 +1,9 @@
|
|
|
package com.macro.mall.security.config;
|
|
|
|
|
|
-import com.macro.mall.security.component.JwtAuthenticationTokenFilter;
|
|
|
-import com.macro.mall.security.component.RestAuthenticationEntryPoint;
|
|
|
-import com.macro.mall.security.component.RestfulAccessDeniedHandler;
|
|
|
+import com.macro.mall.security.component.*;
|
|
|
import com.macro.mall.security.util.JwtTokenUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.http.HttpMethod;
|
|
|
import org.springframework.security.authentication.AuthenticationManager;
|
|
@@ -14,6 +14,7 @@ import org.springframework.security.config.annotation.web.configurers.Expression
|
|
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
+import org.springframework.security.web.access.intercept.FilterSecurityInterceptor;
|
|
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
|
|
|
|
|
|
|
@@ -23,6 +24,9 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
|
|
|
*/
|
|
|
public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|
|
|
|
|
+ @Autowired(required = false)
|
|
|
+ private DynamicSecurityService dynamicSecurityService;
|
|
|
+
|
|
|
@Override
|
|
|
protected void configure(HttpSecurity httpSecurity) throws Exception {
|
|
|
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity
|
|
@@ -53,6 +57,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|
|
// 自定义权限拦截器JWT过滤器
|
|
|
.and()
|
|
|
.addFilterBefore(jwtAuthenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);
|
|
|
+ //有动态权限配置时添加动态权限校验过滤器
|
|
|
+ if(dynamicSecurityService!=null){
|
|
|
+ registry.and().addFilterBefore(dynamicSecurityFilter(), FilterSecurityInterceptor.class);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -97,4 +105,23 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|
|
return new JwtTokenUtil();
|
|
|
}
|
|
|
|
|
|
+ @ConditionalOnBean(name = "dynamicSecurityService")
|
|
|
+ @Bean
|
|
|
+ public DynamicAccessDecisionManager dynamicAccessDecisionManager() {
|
|
|
+ return new DynamicAccessDecisionManager();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @ConditionalOnBean(name = "dynamicSecurityService")
|
|
|
+ @Bean
|
|
|
+ public DynamicSecurityFilter dynamicSecurityFilter() {
|
|
|
+ return new DynamicSecurityFilter();
|
|
|
+ }
|
|
|
+
|
|
|
+ @ConditionalOnBean(name = "dynamicSecurityService")
|
|
|
+ @Bean
|
|
|
+ public DynamicSecurityMetadataSource dynamicSecurityMetadataSource() {
|
|
|
+ return new DynamicSecurityMetadataSource();
|
|
|
+ }
|
|
|
+
|
|
|
}
|