Har*_*ana 5 java spring spring-security spring-boot
我在弹簧启动应用程序中配置了过滤器的代码.当我发出请求时,我的第二个过滤器是B,不会调用.
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity webSecurity) throws Exception {
webSecurity.ignoring().antMatchers(HttpMethod.GET, "/health");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.addFilterBefore(new A(), BasicAuthenticationFilter.class);
http.addFilterAfter(new B(), new A().getClass());
}
}
import org.springframework.web.filter.GenericFilterBean;
public class A extends GenericFilterBean {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("filter A");
}
}
import org.springframework.web.filter.GenericFilterBean;
public class B extends GenericFilterBean {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("filter B");
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
public class A extends GenericFilterBean {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
System.out.println("filter A Before");
arg2.doFilter(arg0,arg1);
System.out.println("filter A After");
}
}
Run Code Online (Sandbox Code Playgroud)
你的配置是正确的。但您需要将您的请求从M. DeinumFilter A提到Filter B的传递到。仅打印是行不通的。在你的代码中它应该是这样的,在.arg2.doFilter()Filter A
从文档中可以看出,
此方法的典型实现将遵循以下模式:
| 归档时间: |
|
| 查看次数: |
4073 次 |
| 最近记录: |