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

2022-09-04 23:18:45

我正在使用Spring boot并配置安全性。WebSecurityConfigurerAdapter

配置忽略的安全 antMatches 的方法如下所示:

    @Override
    public void configure(final WebSecurity web) {
        web
           .ignoring()
           .antMatchers("/items")
           .antMatchers("/items/{itemId}")

其中 为 UUID 格式{itemId}

问题是,使用此配置终结点,也会打开,但它们不应该打开。/items/report/items/images

有没有办法将忽略规则仅应用于具有路径变量的uri?


答案 1

你可以试试这个,d表示 itemId

antMatchers("/items/{\\d+}").access("hasAnyAuthority('ROLE')")

如果你想给许可证所有

antMatchers("/items/**").permitAll()

答案 2

根据 AntPathMarcher 的文档,您需要按照 doc 使用正则表达式指定 path 变量:

{spring:[a-z]+} 将正则表达式 [a-z]+ 匹配为名为“spring”的路径变量。

在您的情况下,它将是:

@Override
    public void configure(final WebSecurity web) {
        web
           .ignoring()
           .antMatchers("/items/{itemId:[\\d+]}")

推荐