Java 获取参数的蚂蚁匹配器

Java 获取参数的蚂蚁匹配器,java,spring,spring-boot,ant,Java,Spring,Spring Boot,Ant,使用Java+SpringBoot,我试图创建和验证用户电子邮件的端点 我生成并发送的链接是/confirm email?id=x&token=xyztatc 然而,由于只有/signup允许在没有承载令牌的情况下访问,因此链路将始终得到403响应。我试图添加/confirm email?{id:.+}&{token:.+},以获得允许,但没有成功 我100%确信正则表达式没有正确编写,但我找不到任何相关的Ant模式文档可供检查。我认为Ant没有使用匹配任何字符,它使用?: 为了允许正则表达式匹

使用Java+SpringBoot,我试图创建和验证用户电子邮件的端点

我生成并发送的链接是
/confirm email?id=x&token=xyztatc

然而,由于只有
/signup
允许在没有承载令牌的情况下访问,因此链路将始终得到403响应。我试图添加
/confirm email?{id:.+}&{token:.+}
,以获得允许,但没有成功


我100%确信正则表达式没有正确编写,但我找不到任何相关的Ant模式文档可供检查。

我认为Ant没有使用
匹配任何字符,它使用


为了允许正则表达式匹配器,必须使用
.regexMatchers()
而不是
.antMatchers()

有关详细信息,请参见此类:

org.springframework.security.web.util.matcher.RegexRequestMatcher
在你的情况下会是这样的:

public class ServerSecurityAppConfig extends ResourceServerConfigurerAdapter {

    // ...

    private static final String[] UNAUTHENTICATED_ROUTES = new String[] {
            "/confirm-email?{.+}&{.+}",
    };


    @Override
    public void configure(final HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .regexMatchers( UNAUTHENTICATED_ROUTES ).permitAll()
                .anyRequest().access( myAppSecurityExpression );
    }


谢谢你的回答!我确实试过用“?”但没有成功。具有讽刺意味的是,解决方案是将URL保持为“/confirm-email”,因为spring security ant模式匹配器似乎忽略了查询字符串。来自AntPathRequestMatcher的JavaDocs:
Matcher,它将预定义的ant样式模式与HttpServletRequest的URL(servletPath+pathInfo)进行比较。URL的查询字符串被忽略…