【问题标题】:When to use antPattern '/api/**' over '/api' in Spring Security何时在 Spring Security 中使用 antPattern '/api/**' 而不是 '/api'
【发布时间】:2020-01-13 18:29:28
【问题描述】:

我已将 WebSecurityConfigurerAdapter 类的配置方法覆盖为:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .antMatchers("/admin").hasRole("ADMIN")
            .anyRequest().authenticated()
            .and()
            .formLogin();
}    

我有 /admin、/admin/user、/admin/user/test 等 API。当我以管理员身份登录时,我可以访问所有三个 URL。我只是想知道'/admin/**'和'/admin'的区别,

【问题讨论】:

    标签: java spring-boot spring-security


    【解决方案1】:

    在 /api/** 的情况下,hasRole(...) 将被授权给所有以模式 /api 开头的请求。 在 /api 的情况下,hasRole(...) 将只被授权一个请求,即 /api

    在上述问题中,只有“/admin”请求被授权为“ADMIN”角色。我们还可以访问其他 URL,因为其他 URL 只需要进行身份验证而忽略角色。我们还可以在使用用户登录时访问“/admin/user”或“/admin/user/test”。如果我们使用 antPattern 作为 '/admin/**',那么我们将无法通过 user 的 session 访问这些 API。

    我是 Spring Security 的新手,我正要发布这个问题,但花了一些时间后,我对它有所了解,所以我也将我的理解纳入建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-17
      • 2010-11-14
      • 2014-08-07
      • 2014-02-21
      • 1970-01-01
      • 2019-09-18
      • 2014-11-13
      • 2015-12-09
      相关资源
      最近更新 更多