【问题标题】:Add a filter to validate path variable for every HTTP request in spring security在 Spring Security 中添加过滤器以验证每个 HTTP 请求的路径变量
【发布时间】:2018-08-25 04:07:31
【问题描述】:

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

我无法弄清楚如何以及在何处触发或连接到 Spring Security 以添加过滤器,以便在到达休息控制器之前验证每个请求,如果代码无效,过滤器自己发送 400 状态码作为响应。

我认为 Spring Security 中应该有一些可以扩展或定制的东西来做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我已经尝试过这种方法,但我无法在过滤器中获取路径变量。我必须验证路径变量的值。
    猜你喜欢
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2021-02-19
    相关资源
    最近更新 更多