为什么在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 问题
相似问题
