1

いくつかのアクションで特定のメソッドにマップしたいインターセプターを作成しましたが、既存のコードを邪魔したくありません。

struts.xml:

<package name="francis" namespace="/francis" extends="struts-default,json-default">
    <interceptors>             
        <interceptor name="authentication" class="main.java.com.commdel.commons.struts2.interceptors.AuthenticationInterceptor"/>            
        <interceptor name="authorization" class="main.java.com.commdel.commons.struts2.interceptors.SecurityInterceptor"/>

カスタムインターセプターcsrf:

        <interceptor name="csrf" class="main.java.com.commdel.commons.struts2.interceptors.CsrfTokenInterceptor"/>           
        
        <interceptor-stack name="commonStack">
            <interceptor-ref name="authentication"/>
            <interceptor-ref name="authorization"/>
            <interceptor-ref name="defaultStack"/>
        </interceptor-stack>
     </interceptors> 
     <default-interceptor-ref name="commonStack"/>
    <global-results>
          <result name="error" type="velocity">/results/velocity/common/globalerror.vm</result>  
          <result name="AUTHORIZATIONERROR" type="velocity">/results/velocity/common/sessionError.vm</result>                        
      </global-results>

csrfアクションへのマッピング:

    <action name="addUpdateClaimHeadMetronic" class="main.java.com.commdel.francis.struts2.actions.ClaimHeadAction" method="addUpdateClaimHead">
        <interceptor-ref name="csrf"/>
    </action>
</package> 
4

2 に答える 2

0

次のようなアクション構成にカスタムインターセプターを追加すると

<action name="addUpdateClaimHeadMetronic" class="main.java.com.commdel.francis.struts2.actions.ClaimHeadAction" method="addUpdateClaimHead">
    <interceptor-ref name="csrf"/>
</action>

次に、csrfインターセプターのみがこのアクション マッピングに構成されます。に含まれる他のインターセプターは、commonStack使用しても省略されます

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

default-interceptor-refStruts では、カスタム インターセプターをアクション マッピングに追加すると、 を使用しないアクション構成をオーバーライドできます。アクション構成をオーバーライドすることで、インターセプターのカスタム セットを使用できます。

defaultStackカスタム アクション マッピングにインターセプターのすべての参照を含めるのを忘れた場合、Struts2 フレームワークを駆動する重要なインターセプターが欠落している可能性があります。

注: Struts2 の インターセプターは、アクションの実行前または実行後にアクションに機能を追加します。ただし、いくつかの重要なインターセプターが欠落していると、アクションの実行が中断される可能性があります。


既存のアクションへのカスタム インターセプター参照を追加する場合は、カスタム インターセプターと共に、コードに応じてアクション マッピングの前後にデフォルト スタックへの参照を追加する必要があります。

<action name="addUpdateClaimHeadMetronic" class="main.java.com.commdel.francis.struts2.actions.ClaimHeadAction" method="addUpdateClaimHead">
    <interceptor-ref name="csrf"/>
    <interceptor-ref name="commonStack"/>
</action> 

注: インターセプターは、xml 構成で使用されている順序で呼び出されます。

于 2016-02-16T09:56:06.150 に答える