提问人:mjs 提问时间:3/28/2012 最后编辑:mjs 更新时间:5/11/2017 访问量:66154
Spring MVC 3,所有拦截器,不包括一些定义的路径
Spring MVC 3, Interceptor on all excluding some defined paths
答:
3赞
tbruyelle
3/29/2012
#1
配置拦截器时,可以指定路径模式。仅对路径与侦听器路径模式匹配的控制器调用拦截器。
但您可能已经注意到,路径模式不支持排除。
所以我认为唯一的方法是在拦截器内对路径进行编码。调用拦截器时,检索 并检查路径是否被列入黑名单。HttpServletRequest.getRequestURI()
例如,您可以在拦截器的带注释的方法中构建黑名单,从而从属性文件中获取列入黑名单的路径。@PostConstruct
评论
0赞
mjs
3/29/2012
是的,问题是确定控制器和动作的正确方法是什么,因为控制器映射理论上可以通过各种方式建立......Spring 知道在拦截器之后要触发的控制器是什么,因为处理程序对象是控制器实例。要正确地做到这一点,必须使用与弹簧相同的机制来查找它,以确定目标动作......任何一个??:)
0赞
tbruyelle
3/30/2012
Spring 用于确定正确控制器的机制依赖于注解。因此,对拦截器进行相同的操作意味着基本上用 .但这目前是不可能的。@RequestMapping
@RequestMapping
67赞
gamerkore
4/12/2013
#2
从 Spring 3.2 开始,他们添加了带有标签的功能
mvc:exclude-mapping
请参阅 Spring 文档中的以下示例:
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/admin/**"/>
<bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/secure/*"/>
<bean class="org.example.SecurityInterceptor" />
</mvc:interceptor>
这是文档的链接
评论
2赞
RuntimeException
11/10/2014
确保 xsd 指向 3.2。我花了十分钟试图弄清楚哪里出了问题。xsi:schemaLocation=“springframework.org/schema/beans springframework.org/schema/beans/spring-beans-3.2.xsd springframework.org/schema/context springframework.org/schema/context/spring-context-3.2.xsd springframework.org/schema/mvc springframework.org/schema/mvc/spring-mvc-3.2.xsd">
25赞
Abdullah Khan
11/16/2015
#3
对于基于 java 的配置,来自文档
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LocaleInterceptor());
registry.addInterceptor(new ThemeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");
registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*");
}
}
评论
1赞
Adrian
5/27/2018
其中 XML 等效项表示为: - 只是为了让其他人知道 SecurityInterceptor 不是 springframework 类。... <bean class="org.example.SecurityInterceptor"/> ...
评论