我有一个相当简单的RequestMapping,它可以转发来自ui-router的url:
@RequestMapping(value = "/**/{path:[^\\.]*}")
public String redirect(@PathVariable("path") String path) {
// Forward to home page so that route is preserved.
return "forward:/";
}
这是为了使所有内容都能与我的SAML IDP一起玩。但是,我还有一个正在创建的Websocket,我不想不想通过这里。 websocket网址的格式为:
/ws/**
我一直在尝试使用正则表达式来忽略其中包含“ ws”的网址,但是我运气不佳。我离得很近,但是我尝试过的任何东西都无法使我得到想要的东西。有什么办法可以将我的antmatcher中的第一个/ **与正则表达式结合使用,以忽略我想要的东西吗?我可以写正则表达式没问题,只是不确定如何将其合并到antmatcher中。
tldr:我需要一个匹配的antmatcher:
/ bbs / index /邮箱 等等...
但不是:
/ ws / info
答案 0 :(得分:0)
您可以尝试将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:/";
}
答案 1 :(得分:0)
我想出了一个简单的解决方案。我没有尝试重新制作antmatcher,而是将所有ui路由器状态URL都添加了“ zfgcui”前缀。我的antmatcher现在看起来像:
/zfgcui/**/{path:[^\\.]*}
现在这将忽略ws端点,并继续仅转发ui-router端点。实施起来要简单得多,也省去很多麻烦