添加过滤器以验证spring安全性中每个HTTP请求的路径变量

时间:2018-03-16 06:56:07

标签: spring spring-boot spring-security spring-filter

我正在使用基于微服务架构的spring-boot构建服务器应用程序,该架构已经有Spring Security来处理基于表单的身份验证。现在要求每个传入的Restful请求都有一个国家代码和区号。我需要验证路径变量中传递的代码是否与本地代码相同。

我无法弄清楚如何以及在何处触发或挂钩Spring Security以添加过滤器,以便在它到达休息控制器之前验证每个请求,并且在代码无效的情况下,过滤器本身发送400状态代码作为响应。

我认为Spring Security中应该有一些可以扩展或自定义的东西来执行此操作吗?

1 个答案:

答案 0 :(得分:0)

您需要通过扩展GenericFilterBean覆盖doFilter方法来创建自定义过滤器。

然后在WebSecurityConfigurerAdapter的自定义实施中,在HttpSecurity中添加上述自定义过滤器。

@Configuration
public class CustomWebSecurityConfigurerAdapter
  extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.addFilterAfter(
          new MyCountryCodeFilter(), BasicAuthenticationFilter.class);
    }
}