spring-security 如何检查authenticated()或hasIpAddress是否为同一antMatcher()?

odopli94  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(146)

我正在尝试将Sprint Security配置为检查用户是否经过身份验证请求是否来自特定的IP子网。
我编写了以下代码,但该代码没有按预期工作:

protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().antMatchers(HttpMethod.valueOf("POST"), "/api/something").authenticated();
    http.authorizeRequests().antMatchers(HttpMethod.valueOf("POST"), "/api/something").hasIpAddress("172.17.0.0/24");
  }

每个配置都单独工作,但我不知道如何使用OR运算符将它们放在一起。
问题是第二个配置覆盖了第一个配置。
有没有办法做到这一点?
谢谢你

lc8prwob

lc8prwob1#

access与SpEL搭配使用

http
                .authorizeRequests()
                .antMatchers(HttpMethod.valueOf("POST"), "/api/something")
                .access("hasIpAddress('172.17.0.0/24') or isAuthenticated()")

相关问题