拦截器

你可以注册拦截器以应用于传入请求,如以下示例所示

  • Java

  • Kotlin

  • Xml

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new LocaleChangeInterceptor());
	}
}
@Configuration
class WebConfiguration : WebMvcConfigurer {

	override fun addInterceptors(registry: InterceptorRegistry) {
		registry.addInterceptor(LocaleChangeInterceptor())
		registry.addInterceptor(UserRoleAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**")
	}
}
<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.handler.UserRoleAuthorizationInterceptor">
			<property name="authorizedRoles" value="ROLE_USER"/>
		</bean>
	</mvc:interceptor>
</mvc:interceptors>
由于与带注解的控制器路径匹配可能存在不一致,拦截器并非理想的安全层。通常,我们建议使用 Spring Security,或者采用与 Servlet 过滤器链集成的类似方法,并尽早应用。
XML 配置将拦截器声明为 MappedInterceptor bean,这些 bean 又会被任何 HandlerMapping bean 检测到,包括来自其他框架的。相比之下,Java 配置仅将拦截器传递给它管理的 HandlerMapping bean。要在 Spring MVC 和其他框架的 HandlerMapping bean 之间重用相同的拦截器,可以通过 MVC Java 配置来声明 MappedInterceptor bean(并且不要在 Java 配置中手动添加它们),或者在 Java 配置和其他 HandlerMapping bean 中配置相同的拦截器。
© . This site is unofficial and not affiliated with VMware.