Ant Matcher для GET параметров - PullRequest
0 голосов
/ 30 августа 2018

Используя Java + SpringBoot, я пытаюсь создать конечную точку для подтверждения электронной почты пользователя.

Сгенерированная и отправленная мной ссылка была /confirm-email?id=x&token=xyztetc

Однако из-за того, что только /signup разрешен доступ без маркера Bearer, ссылка всегда получит ответ 403. Я пытался добавить /confirm-email?{id:.+}&{token:.+} за разрешение, но безуспешно.

Я на 100% уверен, что регулярное выражение написано неправильно, но я не могу найти соответствующую документацию по шаблону Ant для проверки.

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Чтобы разрешить сопоставления регулярных выражений, вы должны использовать .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 );
    }

0 голосов
/ 30 августа 2018

Я не думаю, что муравей использует ., чтобы соответствовать любому символу, он использует ?:

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/AntPathMatcher.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...