我在配置类中有这些行:
http.authorizeRequests()
.anyRequest().authenticated();
现在我希望来自可信子网的所有请求在未经授权的情况下绕过Spring Security。
所以,我修复了我的配置:
http.authorizeRequests()
.antMatchers("/**").hasIpAddress(127.0.0.1/24)
.anyRequest().authenticated();
好的,私有子网内的机器到机器通信现在运行良好。 不幸的是,来自网络浏览器的授权客户每次都有401错误。
有没有办法写OR
条件?
像这样:client has ip #.#.#.# OR should be authorized
答案 0 :(得分:2)
hasIpAddress
和authenticated
或hasRole
等方法适用于简单的访问规则。在它们下面,它们都调用access
方法来添加表达式。您也可以自己使用它来编写更复杂的安全表达式。
http.authorizeRequests()
.anyRequest().access("hasIpAddress('127.0.0.1/24') or isAuthenticated()");
Spring Security参考指南中提到了this。