This question already has answers here:
When to use Spring Security`s antMatcher()?
(3个答案)
4个月前关闭。
我是springig security,我从https://spring.io/guides/tutorials/spring-boot-oauth2/遇到了这段代码
我删除了
我知道
那么
(3个答案)
4个月前关闭。
我是springig security,我从https://spring.io/guides/tutorials/spring-boot-oauth2/遇到了这段代码
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**")
.authorizeRequests()
.antMatchers("/", "/login**", "/webjars/**", "/error**")
.permitAll()
.anyRequest()
.authenticated();
}
我删除了
.antMatcher("/**")
,代码仍然有效。我知道
**
匹配路径中的零个或多个目录,所以我认为antMatcher("/**").authorizeRequestes().antMatcher("/login")
会匹配直接或间接位于根路径下的"/login"
,即我希望它匹配诸如/login
和/demo/login
的路径,并非如此,它只匹配根路径正下方的/login
。那么
.antMatcher("/**") here
到底需要什么呢? 最佳答案
他们是不同的东西。http.antMatcher()
配置此SecurityFilterChain
将处理的URL。默认为匹配所有URL。这就是为什么删除http.antMatcher("/**")
的原因相同。http.authorizeRequests()
配置URL的授权事项,例如是否需要进行身份验证或仅某些角色可以访问它等。
因此,如果URL与http.antMatcher()
不匹配,Spring安全将不会处理它,并且http.authorizeRequests()
不适用于此URL。换句话说,为了使http.authorizeRequests()
中配置的URL生效,它应该由Spring Security处理并在http.antMatcher()
中进行匹配。
08-28 23:01