java—ant matcher在spring安全中的工作原理

ohtdti5x  于 2021-10-10  发布在  Java
关注(0)|答案(2)|浏览(279)

我想知道ant matcher在spring security中是如何工作的??
我有两个休息点:第一个休息班

@RestController
@RequestMapping("/auth")
class RestService1{

      @GetMapping("/status")
      public String status() {
          return "Yes, I am fine";
     }
 }

二等舱

@RestController
@RequestMapping("/test")
class RestService2{

      @GetMapping("/status")
      public String status() {
          return "Yes, Test status";
     }
 }

spring安全配置类:

@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter{       
 protected void configure(HttpSecurity http)throws Exception{
      http.authorizeRequests().antMatchers("/auth/*").permitAll();
  }
 }

我的问题是:
根据我的理解,“antmatchers(“/auth/*”).permitall()行的含义是允许所有包含“auth”的请求URL。但有了这段代码,我也可以访问localhost:8080/test/status url。
所以,如果我想只允许“auth”包含url并拒绝所有url,我能做什么呢?

vsikbqxv

vsikbqxv1#

此代码将只允许以“auth”开头的请求URL,并将拒绝所有其他URL。

@EnableWebSecurity
@Configuration
class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/auth/**")
            .permitAll()
            .anyRequest()
            .denyAll();
    }
}
sgtfey8w

sgtfey8w2#

anyrequest().authenticate()将禁止所有其他路由,在访问这些路由之前必须对其中一个路由进行身份验证。

@Configuration
class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/auth/**")
            .permitAll()
            .anyRequest()
            .authenticate();
    }
}

相关问题