Spring RequestMapping antmatcher игнорирует URL - PullRequest
0 голосов
/ 26 января 2019

У меня довольно простое RequestMapping, которое перенаправляет URL-адреса от ui-router:

@RequestMapping(value = "/**/{path:[^\\.]*}")
    public String redirect(@PathVariable("path") String path) {
        // Forward to home page so that route is preserved.
        return "forward:/";
    }

Это сделано для того, чтобы все было хорошо с моим SAML IDP.Тем не менее, у меня также есть веб-сокет, который я создаю, и который я не хочу пропустить.URL веб-сокета имеет вид:

/ws/**

Я пытался работать с регулярным выражением, чтобы игнорировать URL-адреса, содержащие в себе «ws», но мне немного не повезло.Я подхожу очень близко, но ничто из того, что я пробовал, не дает мне того, чего я хочу.Могу ли я как-нибудь объединить первый / ** в моем antmatcher с регулярным выражением, чтобы игнорировать то, что я хочу?Я могу написать регулярное выражение без проблем, я просто не уверен, как включить его в antmatcher.

tldr: мне нужен antmatcher, который соответствует:

/ bbs / index / mailbox и т. Д....

но не:

/ ws / info

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Я придумал более простое решение.Вместо того, чтобы пытаться переделать antmatcher, я просто префикс всех моих URL-адресов состояния UI-маршрутизатора с «zfgcui».Мой antmatcher теперь выглядит так:

/zfgcui/**/{path:[^\\.]*}

Это теперь игнорирует конечную точку ws и продолжает только пересылать конечные точки ui-router.Это было гораздо проще и гораздо менее сложно реализовать

0 голосов
/ 26 января 2019

Что вы можете попробовать, так это оставить antMatchers по умолчанию и попытаться использовать два разных RequestMappings, в которых один для /**, а другой для /ws/**

Для запросов WS используйте что-то вроде:

@RequestMapping(value = "/ws/**/{path:[^\\.]*}")
    public String wsHandling(@PathVariable("path") String path) {
        // Do some other stuff
        return null;
    }

А для остальных запросов используйте что-то вроде:

@RequestMapping(value = "/**/{path:[^\\.]*}")
    public String redirect(@PathVariable("path") String path) {
        // Forward to home page so that route is preserved.
        return "forward:/";
    }
...