我们正在使用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
并在其中实现我们的实现吗?
答案 0 :(得分:1)
您永远不应该对org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
进行自定义。
即使它在其他框架中不是final
而不是package protected
,也不需要扩展该过滤器。
您应该学习Struts2架构的基础知识。来自Nutshell。
你可以看到基本的Struts2流程。 Struts2被实现为一个过滤器来处理所有请求,并通过一堆拦截器将它们分配给动作,这些拦截器利用了Struts2框架的大部分功能和特性。
因此,如果您想添加一些功能,如身份验证,那么您应该首先考虑通过身份验证拦截器进行扩展。应该将此拦截器配置为在传入请求的每个操作上调用。了解它是如何在struts2 adding interceptors in struts.xml
for all action class中完成的。
后面有一个链接可用于编写自定义拦截器以进行身份验证。见Is there a way to redirect to another action class without using on struts.xml