我有一个@RestController
,我想添加一个Spring Filter,在处理请求之前添加一个检查,扩展OncePerRequestFilter
此外,我不想将它添加到所有控制器,我最后的办法是将它添加到特定路径上的一般WebApplicationInitializer
的onStartup
:
public void onStartup(ServletContext container) throws ServletException {
FilterRegistration corsFilterReg = servletContext.addFilter("CorsFilter", CorsFilter.class);
corsFilterReg.addMappingForUrlPatterns(null, false, "/servlet/cors/*");
有没有其他方法将Spring Filter连接到特定的Spring RestController?
在Spring REST中使用过滤器拦截器是错误的吗?
过滤器应仅连接到URL吗?
你可以使用@WebFilter annotation
。
例:
@WebFilter(filterName = "Filter", urlPatterns = { "/filter/*" })
public class WebFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
.......
}
.......
}