Невозможно исключить метод в перехватчике struts2

В этом вопросе у меня противоположная проблема: intercepto">Struts 2: исключение метода из проверки только из перехватчика defaultStack

В приведенном выше вопросе были исключены все методы, моя проблема в том, что никакие методы не исключаются!

Я пытаюсь заставить мой authenticationInterceptor игнорировать метод showLogin моего LoginAction:

<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 внутри действия, и ничего не работает.

Как правильно пропустить авторизациюInterceptor, когда я перенаправляю на loginIntial?


person IVR Avenger    schedule 31.08.2012    source источник
comment
На самом деле ничего не знаю о вашем перехватчике, так что помочь на самом деле невозможно. Это MethodFilterInterceptor?   -  person Dave Newton    schedule 31.08.2012
comment
Почему вы думаете, что AbtractInterceptor имеет параметр excludeMethods? Это исходит от MethodFilterInterceptor.   -  person Dave Newton    schedule 10.09.2012
comment
В примере, который я использовал, подробно описано использование AbstractInterceptor и показано, как действуют свойства excludeMethods. Плохой пример!   -  person IVR Avenger    schedule 02.11.2012


Ответы (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>
person IVR Avenger    schedule 09.09.2012