antMatchers与路径的任何开头匹配
我有用于身份验证的REST服务。身份验证端点将看起来像/api/v.1/authentication
。API版本是可以更改以反映更新版本的变量。一个例子是/api/v.2/authentication
。我希望有一个antMatcher
可以处理这两种情况的应用程序,因此我尝试.antMatchers(HttpMethod.POST,"**/authenticate").permitAll()
使用**
匹配端点的任何开头,但这是行不通的。下面的完整设置。
@Overrideprotected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.POST, "**/authenticate").permitAll()
.antMatchers(HttpMethod.GET, "**/get-public-key").permitAll()
.and()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.anyRequest().authenticated();
}
有什么建议可以解决这个问题吗?
回答:
您必须使用绝对模式,请参阅AntPathMatcher
:
模式和路径必须都是绝对的,或者都必须是相对的,才能使两者匹配。因此,建议该实现方式的用户清理模式,以便在模式使用的前缀中以“
/”作为前缀。
您修改和简化的配置:
@Overrideprotected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.POST, "/**/authenticate").permitAll()
.antMatchers(HttpMethod.GET, "/**/get-public-key").permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.anyRequest().authenticated();
}
以上是 antMatchers与路径的任何开头匹配 的全部内容, 来源链接: utcz.com/qa/435517.html