我在使用Spring拦截器的URL模式时遇到了一些问题。
我以编程方式添加路径模式,而不是在XML中添加,但据我所知,它应该是一样的。我就像这样添加它:
public void addInterceptors(InterceptorRegistry registry) {
super.addInterceptors(registry);
registry.addInterceptor(new AdminInterceptor()).addPathPatterns("/admin.html");
registry.addInterceptor(getRateLimitInterceptor());
}如果您不添加任何路径模式,它将应用于每个URL。
我希望它应用于以下URL (假设它在本地运行):
localhost:8080/webapp/#/admin该页面通过以下方式获取其内容:
localhost:8080/webapp/admin.html所以我不能完全确定我需要阻止的是哪个URL?理想情况下,我会阻止请求URI中包含"admin“的任何内容,但我不确定这是否可行。我尝试了"#/admin“"/#/admin”"admin“"/admin”“的变体,但没有效果。
我确定这只是我在构建路径模式时搞砸了一些非常小的东西。有什么帮助吗?
发布于 2014-07-10 23:22:31
在URL中使用时,#是一个特殊字符。它表示片段的开始。
如果要将HTTP请求发送到包含#的URL,则必须使用%23对其进行URL编码。
在这种情况下,
registry.addInterceptor(new AdminInterceptor()).addPathPatterns("/#/admin");都会起作用,假设你有一个
@RequestMapping("/#/admin")或类似映射的处理程序方法。
https://stackoverflow.com/questions/24680130
复制相似问题