1

我们正在使用 Struts2 StrutsPrepareAndExecuteFilter。里面的配置web.xml是:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    <init-param>
      <param-name>struts.devMode</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

我们需要在这个通用拦截器中实现身份验证/权限。

什么是简单的方法?我们可以创建一个自定义的拦截器来扩展StrutsPrepareAndExecuteFilter并在其中执行我们的实现吗?

4

1 回答 1

1

您永远不应该对org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.

即使它finalpackage protected其他框架不同,也没有必要扩展该过滤器。

您应该学习 Struts2 架构的基础知识。从果壳

您可以看到基本的 Struts2 流程。Struts2 被实现为一个过滤器来处理所有请求,并通过一个利用 Struts2 框架的大部分功能和特性的拦截器堆栈将它们分派给操作。

所以如果你想添加一些像认证这样的特性,那么你应该首先考虑通过认证拦截器来扩展它。此拦截器应配置为在来自传入请求的每个操作上调用。看看它是如何在struts2 中struts.xml为所有 action class添加拦截器的。

后面有一个链接,您可以使用该链接编写自定义拦截器以进行身份​​验证。请参阅有没有办法在不使用 on 的情况下重定向到另一个动作类struts.xml

于 2016-04-26T08:58:29.627 回答