我正在使用Spring boot和WebSecurityConfigurerAdapter
来配置安全性。
配置被忽略的安全antMatches的方法如下:
@Override
public void configure(final WebSecurity web) {
web
.ignoring()
.antMatchers("/items")
.antMatchers("/items/{itemId}")
其中{itemId}
为UUID格式
问题在于,使用这种配置,/items/report
,/items/images
之类的端点也已打开,但它们不应打开。
有没有办法将忽略规则仅应用于具有路径变量的uri?
答案 0 :(得分:0)
要获得比Ant模式更复杂的匹配,请在控制器上使用基于方法的安全性或(更好的)服务层方法。
答案 1 :(得分:-1)
您可以尝试使用d代表itemId
antMatchers("/items/{\\d+}").access("hasAnyAuthority('ROLE')")
如果您想全部允许
antMatchers("/items/**").permitAll()
答案 2 :(得分:-1)
根据AntPathMarcher
的文档,您需要按照doc使用正则表达式指定路径变量:
{spring:[a-z] +}与正则表达式[a-z] +匹配,并将其作为名为“ spring”的路径变量。
您的情况将是:
@Override
public void configure(final WebSecurity web) {
web
.ignoring()
.antMatchers("/items/{itemId:[\\d+]}")