当前位置: 首页 > 知识库问答 >
问题:

无法排除struts2拦截器中的方法

杜禄
2023-03-14

在这个问题中,我遇到了与Struts 2相反的问题:仅从defaultStack截取器中排除验证方法

上面的问题涉及到所有的方法都被排除在外,我的问题是没有任何方法被排除在外!

我正在尝试让authenticationInterceptor忽略LoginAction的showLogin方法:

<interceptors>
    <interceptor name="authorizationInterceptor" class="org.companyname.struts.interceptor.AuthorizationInterceptor"/>
    <interceptor-stack name="appDefault">
        <interceptor-ref name="authorizationInterceptor"/>
        <interceptor-ref name="defaultStack">
            <param name="exception.logEnabled">true</param>
            <param name="exception.logLevel">ERROR</param>
        </interceptor-ref>              
    </interceptor-stack>
</interceptors>
<default-interceptor-ref name="appDefault" />

<action name="loginInitial" class="org.companyname.struts.action.LoginAction" method="showLogin">
    <interceptor-ref name="appDefault">
        <param name="authorizationInterceptor.excludeMethods">showLogin</param>             
    </interceptor-ref>
    <result name="success">/login.jsp</result>                      
</action>

但是,每次我转发到loginInitial时,拦截器都会抓取它,即使我的showLogin方法被排除在外。

我检查了命名问题,并尝试在操作中的interceptor-ref中放入几个不同的值,但似乎没有任何工作。

当我转发到LoginIntial时,跳过authorizationInterceptor的正确方法是什么?

共有1个答案

宗政元青
2023-03-14

我认为我的问题是我使用的拦截器的类型,即AbstractInterceptor。所以,我只是在我不想被拦截的操作上使用不同的拦截器堆栈:

<interceptor-stack name="appDefaultWithAuth">               
    <interceptor-ref name="defaultStack">
        <param name="exception.logEnabled">true</param>
        <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>              
    <interceptor-ref name="authorizationInterceptor"/>
</interceptor-stack>            

<interceptor-stack name="appDefaultNoAuth">             
    <interceptor-ref name="defaultStack">
        <param name="exception.logEnabled">true</param>
        <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>                  
</interceptor-stack>

<default-interceptor-ref name="appDefaultWithAuth" />

<action name="loginInitial" class="org.company.struts.action.LoginAction" method="showLogin">
    <interceptor-ref name="appDefaultNoAuth"/>              
    <result name="success">/login.jsp</result>                      
</action>
 类似资料:
  • 主要内容:Struts2框架的拦截器:,如何使用拦截器?,创建自定义的拦截器,创建拦截器类:,创建动作类:,创建视图,创建页面:,配置文件,堆叠多个拦截器:拦截器的概念是Servlet过滤器或JDK代理类一样的。拦截器允许横切功能分开实现的动作,以及框架。使用拦截器,可以实现如下: 提供预处理行动之前被称为逻辑。 提供后处理逻辑动作后被调用 捕获异常,这样可以进行替代处理。 Struts2框架提供的许多功能都使用拦截实现的例子包括异常处理,文件上传,生命周期回调和验证等事实上作为Struts2的

  • 主要内容:参考很多时候,相同的一组拦截器可以适用于不同的动作类,例如, 在上述情况下,它有许多重复工作以及不能重复使用。 幸运的是,在Struts 2自带的拦截器栈,使开发人员建立一组拦截到一个单元名为“栈名字”, 和可以通过“栈名字”引用操作它。 最佳做法 建议组合相同的一组拦截器到一个拦截器栈摆脱重复的工作,并增加了项目的可重用性。 在上面的例子更新,声明一个拦截器栈,命名为“defaultStackWit

  • 主要内容:1. 动作,2. JSP页面,3. 执行和等待拦截器,4. 示例,参考在Struts2中附带一个名为“execAndWait”一个非常有趣的“执行和等待”拦截器,这是一个非常方便的拦截器长时间运行操作在后台,显示用户的自定义的等待页面。在本教程中,它显示了一个完整的使用 Struts2 execAndWait 拦截器的例子。 1. 动作 一个普通的动作类,有一个长时间运行进程,证明了execAndWait效果。 LongProcessAction.java 2. J

  • 问题内容: 我正在使用Java EE 6和Jboss AS7.1,并尝试使用拦截器绑定(来自jboss网站的示例)。 我有一个InterceptorBinding注解: 拦截器: 还有一个豆: 但是拦截器没有被称为。。。 在编写此代码时将调用拦截器: 谢谢你的帮助。 问题答案: 您是否按照参考示例中的说明启用了拦截器? 缺省情况下,bean档案没有通过拦截器绑定绑定的已启用拦截器。必须通过将侦听器

  • 有多篇关于如何在Spring AOP中拦截内部方法调用的帖子。但是找不到任何与使用AspectJ排除内部方法相关的帖子。我们希望使用AspectJ编译时编织来实现它promise的运行时性能改进。 如果另一个类的方法调用了下面类TestService中的任何公共方法,则应该拦截该调用。但是,不应该截取从method1()到method2()的内部调用。我们只希望拦截器对每个对象只拦截一次。 一个示

  • 本文向大家介绍详解Struts2拦截器机制,包括了详解Struts2拦截器机制的使用技巧和注意事项,需要的朋友参考一下 Struts2的核心在于它复杂的拦截器,几乎70%的工作都是由拦截器完成的。比如我们之前用于将上传的文件对应于action实例中的三个属性的fileUpload拦截器,还有用于将表单页面的http请求参数设置成action中对应的属性的param拦截器等。总之,在整个Struts