如何仅将Spring Security AntMatchers模式应用于具有pathVariable的url

时间:2019-04-26 07:58:49

标签: java spring spring-boot spring-security

我正在使用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?

3 个答案:

答案 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+]}")