1

私はこの質問で仲間の反対の問題を抱えています: Struts 2:defaultStackインターセプターからの検証からメソッドを除外する

上記の質問には、すべてのメソッドが除外されていることが含まれていました。私の問題は、どのメソッドも除外されていないということです。

LoginActionのshowLoginメソッドを無視するようにauthenticationInterceptorを取得しようとしています。

<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をスキップする適切な方法は何ですか?

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 に答える