在我的web.xml中我创建了以下过滤器:
<filter>
<filter-name>tokenAuthenticationFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>tokenAuthenticationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我创建了以下组件:
@Component("tokenAuthenticationFilter")
public class TokenAuthenticationFilter implements Filter
{
final static Logger logger = Logger.getLogger(TokenAuthenticationFilter.class.getCanonicalName());
@Autowired
private IAMUserDAO iamUserDAO;
@Override
public void init(FilterConfig arg0) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
//Code comes here
}
@Override
public void destroy() {
}
不幸的是,这个过滤器永远不会访问,我不知道为什么。请帮助
我的最初需求只是在使用@Autowired属性的滤镜上使用delegatingfilterproxy添加过滤器。我最初尝试根据以下说明修改web.xml;但是这对我不起作用。
- 我的下一步是创建一个AbstractAnnotationConfigDisPatcherServletInitializer将会完全消除Web.xml配置。
- 为此,我必须使用Java配置并将所有XML配置文件转换为Java配置;servlet-context.xml变成springwebconfig.java和root-context.xml,springrootconfig.java
-
我创建了此类,一切都按计划进行:
public class AuthenticationBWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Filter[] getServletFilters () { DelegatingFilterProxy filterProxy = new DelegatingFilterProxy(); filterProxy.setTargetBeanName("tokenAuthenticationFilter"); return new Filter[]{filterProxy, new AppLog4jFilter()}; } @Override protected Class<?>[] getRootConfigClasses() { return new Class[] { SpringRootConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { return new Class[] { SpringWebConfig.class }; } @Override protected String[] getServletMappings() { return new String[]{"/"}; } @Override protected void registerContextLoaderListener(ServletContext servletContext) { super.registerContextLoaderListener(servletContext); }
}
希望这将有助于有同样问题的一些失落的灵魂。