1

我在这个问题中遇到了这个家伙的相反问题: 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 方法被排除在外。

我检查了命名问题,并尝试在操作中的拦截器引用中放置几个​​不同的值,但似乎没有任何效果。

当我转发到 loginIntial 时跳过授权拦截器的正确方法是什么?

4

1 回答 1

1

我相信我的问题是我正在使用的拦截器类型,即 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>
于 2012-09-09T20:55:37.457 回答