【问题标题】:Disable spring security for url containing a path variable [duplicate]为包含路径变量的 url 禁用 spring 安全性 [重复]
【发布时间】:2019-12-09 18:59:45
【问题描述】:

我工作的项目有spring securityantMatcher实现如下:

http.authorizeRequests()
    .antMatchers("/v1/users/**").authenticated()
    .antMatchers(HttpMethod.POST, "/v1/users/*/do").permitAll()

当我尝试访问 /v1/users/2/do 时,我收到一个未经授权的错误,但我希望它可以访问,因为我在 URL 模式中添加了“permitAll()”。

我试过了:

.antMatchers(HttpMethod.POST, "/v1/users/{id}/do").permitAll()

我仍然获得未经授权的访问。

【问题讨论】:

    标签: java spring-boot spring-security


    【解决方案1】:

    您需要切换行以便将最具体的规则放在首位:

    http.authorizeRequests()
        .antMatchers(HttpMethod.POST, "/v1/users/*/do").permitAll()
        .antMatchers("/v1/users/**").authenticated()
    

    这是因为第一个匹配项(按照声明的顺序)是使用的匹配项。

    由于您首先拥有最通用的规则,因此这是考虑的规则,忽略下一个可能的匹配项(并禁止请求)。

    【讨论】:

      猜你喜欢
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 2016-07-25
      • 2019-03-30
      相关资源
      最近更新 更多