Explorar o código

fix: whitelist鉴权调整

lijiaqi hai 1 ano
pai
achega
ee19e464d0

+ 3 - 3
src/main/java/com/inspur/smsb/gateway/config/AuthorizationManager.java

@@ -31,7 +31,7 @@ public class AuthorizationManager implements ReactiveAuthorizationManager<Author
     private PathRolesMap pathRolesMap;
 
     @Resource
-    private UrlAuthorizationDecision urlAuthorizationDecision;
+    private WhiteListChecker whiteListChecker;
 
     @Override
     public Mono<AuthorizationDecision> check(Mono<Authentication> mono, AuthorizationContext authorizationContext) {
@@ -45,13 +45,13 @@ public class AuthorizationManager implements ReactiveAuthorizationManager<Author
             }
         });
         return mono
-            .filter(Authentication::isAuthenticated)
+            .filter(authentication -> authentication.isAuthenticated() || whiteListChecker.check(path))
             .flatMapIterable(Authentication::getAuthorities)
             .map(GrantedAuthority::getAuthority)
             .any(roleId -> {
                 return CollectionUtils.isEmpty(authorities)?Boolean.TRUE:authorities.contains(roleId);
             })
-            .map(auth -> new AuthorizationDecision(urlAuthorizationDecision.check(path)))
+            .map(AuthorizationDecision::new)
             .defaultIfEmpty(new AuthorizationDecision(false));
     }
 }

+ 4 - 7
src/main/java/com/inspur/smsb/gateway/config/UrlAuthorizationDecision.java → src/main/java/com/inspur/smsb/gateway/config/WhiteListChecker.java

@@ -1,10 +1,7 @@
 package com.inspur.smsb.gateway.config;
 
-import org.springframework.beans.factory.annotation.Value;
+import lombok.Setter;
 import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.stereotype.Component;
 import org.springframework.util.AntPathMatcher;
 
@@ -14,14 +11,14 @@ import java.util.List;
  * @author lijiaqi
  * @date 2024-05-28 15:03
  */
-@EnableConfigurationProperties
-@Configuration
+@Component
 @ConfigurationProperties(prefix = "authorization")
-public class UrlAuthorizationDecision {
+public class WhiteListChecker {
 
     /**
      * 路径白名单
      */
+    @Setter
     private List<String> whiteList;
 
     private final AntPathMatcher antPathMatcher = new AntPathMatcher();