有一种方法(在Spring中)定义一个必须为所有请求调用的方法,类似于@modelAttribute ???
我想定义一个方法来执行检查并为每个请求放入会话对象,方法是一样的
在这种方法中,我将收到“Principal”(null,在认证之前和用户名... ecc之后)
答案 0 :(得分:1)
一种方法是使用org.springframework.web.servlet.handler.HandlerInterceptorAdapter。
看一下这篇文章:
只需创建一个扩展它的类并使其成为一个组件。然后,您可以将拦截器映射到applicatioContext.xml中的特定URL patterm。
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*.svc"/>
<bean class="com.netsoft.skydive.controllers.SecuredApiEndpoint"></bean>
</mvc:interceptor>
</mvc:interceptors>
答案 1 :(得分:1)
如另一个答案所述 - 只需使用HandlerInterceptor
并继承自例如HandlerInterceptorAdapter
。最方便的方法可能是使用Spring的java配置,如下面的代码示例所示:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="my.base.package")
public class MyWebApplicationConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptorAdapter() {
@Override
public boolean preHandle(final HttpServletRequest httpServletRequest, final HttpServletResponse httpServletResponse, final Object o) throws Exception {
// Do stuff with your interceptor
return true;
}
}).addPathPatterns("/**");
}
}
有关详细信息,请查看优秀的JavaDoc。