【问题标题】:Filters not working in Struts2过滤器在 Struts2 中不起作用
【发布时间】:2011-05-24 05:36:44
【问题描述】:

由于某些未知原因,我无法在 struts2 上使用过滤器。我正在使用 apache tomcat 并使用过滤器来限制用户访问(我更喜欢而不是拦截器)。我的/tela-paciente 请求没有被过滤有什么原因吗??

   <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter>
        <filter-name>Paciente</filter-name>
        <filter-class>br.ufg.inf.sas.filtros.FiltroPaciente</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>Paciente</filter-name>
        <url-pattern>/tela-paciente</url-pattern>
    </filter-mapping>

【问题讨论】:

    标签: java struts2 servlet-filters


    【解决方案1】:

    要记住的另一件事是,在您的示例中,/tela-paciente 的映射发生在 /* 的映射之后(对于 Struts2 过滤器),因此所有请求都将映射到 Struts2,并且没有一个会影响您的安全过滤器。

    请记住,过滤器的顺序很重要。 :)

    @totaam:StrutsPrepareAndExecuteFilter 不会链接到其他过滤器,除非:

    • struts.action.excludePattern 属性将请求 URL 排除在处理之外
    • 请求未映射到操作或静态资源

    因此,假设他的请求确实映射到一个动作,如果它在 Struts2 过滤器之后被映射,他的安全过滤器将不会被调用。

    【讨论】:

      【解决方案2】:

      您是否尝试将过滤器映射设置为“/tela-paciente/*” (&lt;url-pattern&gt;/tela-paciente/*&lt;/url-pattern&gt;)?

      您的问题是一个 tomcat 问题,该特定映射中没有与 struts 相关的任何内容。

      以下 Steven Benitez 的陈述是正确的 - 我的错(“不会进入您的安全过滤器”)。

      有关过滤器的更多一般信息:除非其中一个过滤器通过不调用过滤器链来停止处理,否则它们会被处理(这可能是这里的情况 - 不过这应该是一种罕见的事情,仅在处理时使用例外,重定向 URL 或阻止页面加载时)。您可以将任意数量的过滤器绑定到重叠的 URL 集。

      【讨论】:

        猜你喜欢
        • 2014-04-22
        • 2012-04-02
        • 2017-04-04
        • 2013-06-28
        • 2015-07-15
        • 2011-10-31
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多