簡體   English   中英

帶有javax.servlet.Filter的DelegatingFilterProx不起作用

[英]DelegatingFilterProx With javax.servlet.Filter Not Working

在我的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() {

    }   

不幸的是,這個過濾器從未被訪問過,我也不知道為什么。 請幫忙

我最初的需求是使用DelegatingFilterProxy將過濾器添加到現有應用程序中,因為我的過濾器帶有@Autowired屬性。 我最初嘗試按照這些說明修改web.xml; 但是,這對我沒有用。

  • 然后,我的下一步是創建一個AbstractAnnotationConfigDispatcherServletInitializer,它將完全消除web.xml配置。
  • 為了做到這一點,我必須使用java配置並將所有xml配置文件轉換為java配置。 servlet-context.xml變為SpringWebConfig.java,而根目錄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); } 

    }

希望這將幫助一些失去靈魂的人解決同樣的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM