为什么在ValidateCodeFilter中, SecurityProperties 不需要加@Autowire?
来源:4-8 图片验证码重构

大番薯93
2017-11-08
而在 BrowserSecurityConfig 中却加了@Autowire。
下面是BrowserSecurityConfig.java 的部分代码:
@Configuration public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private SecurityProperties securityProperties; @Autowired private AuthenticationSuccessHandler browserAuthenticationSuccessHandler; @Autowired private AuthenticationFailureHandler browserAuthenticationFailurehandler; @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception { ValidationCodeFilter validationCodeFilter = new ValidationCodeFilter(); validationCodeFilter.setAuthenticationFailureHandler(browserAuthenticationFailurehandler); validationCodeFilter.setSecurityProperties(securityProperties); validationCodeFilter.afterPropertiesSet();
下面是ValidateCodeFilter.java的部分代码:
@Getter @Setter @NoArgsConstructor @Slf4j public class ValidationCodeFilter extends OncePerRequestFilter implements InitializingBean { @Autowired private AuthenticationFailureHandler authenticationFailureHandler; private SessionStrategy sessionStrategy = new HttpSessionSessionStrategy(); private Set<String> urls = new HashSet<>(); private SecurityProperties securityProperties; private AntPathMatcher pathMatcher = new AntPathMatcher(); @Override public void afterPropertiesSet() throws ServletException { super.afterPropertiesSet(); String[] configUrls = StringUtils.splitByWholeSeparatorPreserveAllTokens(securityProperties.getValidationCode().getImage().getUrl(),","); for(String configUrl : configUrls){ urls.add(configUrl); } urls.add("/authentication/form"); }
谢谢老师!
写回答
1回答
-
因为这时ValidateCodeFilter并没有定义为spring的bean,它是手工实例化然后手工设置的相关属性(如图中红框的部分),所以没有@Autowired
112018-04-11
Spring Security技术栈开发企业级认证与授权
Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全
2662 学习 · 1561 问题
相似问题