Spring Security 之 編寫自定義Filter的意外
通過寫個(gè)Filter會(huì)采用@Component進(jìn)行注解,然后由環(huán)境進(jìn)行自動(dòng)注入到過濾鏈上
@Component
public class MyFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
}
}
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private MyFilter myFilter;
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.addFilterBefore(myFilter, UsernamePasswordAuthenticationFilter.class);
}
}
以上邏輯是寫一個(gè)自定義過濾器,通過配置添加到SpringSecurity過濾鏈中。在Spring Boot環(huán)境運(yùn)行中,就會(huì)發(fā)現(xiàn)Spring MVC主過濾鏈上也存在一個(gè)MyFilter的相同實(shí)例,即請(qǐng)求在符合要求的情況下,會(huì)經(jīng)過MyFilter過濾器兩次