@RefreshScope @Configuration public class CasConfiguration extends CasClientConfigurerAdapter { private final static Logger log = LoggerFactory.getLogger(CasConfiguration.class); @Autowired private CasProperties casProperties; @Autowired(required = false) private DebugUserService debugUserService; @Override public void configureAuthenticationFilter(FilterRegistrationBean authenticationFilter) { super.configureAuthenticationFilter(authenticationFilter); if (casProperties.getUrlPatterns() != null) { authenticationFilter.setUrlPatterns(casProperties.getUrlPatterns()); } else { log.warn("没有设置gate.cas.url-patterns,使用: [/*]"); authenticationFilter.setUrlPatterns(Collections.singletonList("/*")); } AuthenticationFilter authFilter = (AuthenticationFilter) authenticationFilter.getFilter(); authFilter.setIgnoreUrlPatternMatcherStrategyClass(new UrlPatternMatcherStrategy() { @Override public boolean matches(String s) { // s: http://JCODE-PC.lan:8080/actuator/health // s: http://localhost:8080/test // 开启调试时忽略所有拦截 if (debugUserService != null && debugUserService.inDebugMode()) { return true; } return ignoreUrlPatterns(s); } @Override public void setPattern(String s) { log.debug("CAS UrlPatternMatcherStrategy set pattern: {}", s); } }); } public boolean ignoreUrlPatterns(String requestUri) { List<String> ignoreUrlPatterns = casProperties.getIgnoreUrlPatterns();//忽略包括哪些路径 if (ignoreUrlPatterns.size() == 0) { return false; } for (String pattern : ignoreUrlPatterns) { if (requestUri.contains(pattern)) { return true; } } return false; } }详解该代码
时间: 2024-03-29 18:34:26 浏览: 88
Spring MVC打印@RequestBody、@Response日志的方法
5星 · 资源好评率100%
这段代码是一个基于Spring Boot框架的Cas客户端配置类,其中使用了@Configuration和@RefreshScope注解来标识这是一个配置类,并且支持动态刷新配置。该类继承了CasClientConfigurerAdapter类,覆盖了其中的configureAuthenticationFilter()方法,来配置Cas客户端的认证过滤器。
在该方法中,首先通过@Autowired注解注入了CasProperties和DebugUserService两个类的实例,用于读取Cas客户端的配置和判断是否处于调试模式。然后根据CasProperties中配置的URL路径模式,设置了认证过滤器的URL路径。
接下来,该方法使用了一个匿名内部类来实现了UrlPatternMatcherStrategy接口,来判断是否忽略某些URL路径,如果debugUserService不为空且处于调试模式,则忽略所有拦截。最后,该类还提供了一个ignoreUrlPatterns()方法,用于判断是否忽略某些URL路径。
阅读全文