无法排除struts2侦听器中的方法
在这个问题上,我的问题与那个家伙正好相反: 上面的问题涉及排除所有方法,我的问题是没有排除任何方法 我试图让我的authenticationInterceptor忽略我的登录操作的showLogin方法:无法排除struts2侦听器中的方法,struts2,interceptor,struts-config,interceptorstack,Struts2,Interceptor,Struts Config,Interceptorstack,在这个问题上,我的问题与那个家伙正好相反: 上面的问题涉及排除所有方法,我的问题是没有排除任何方法 我试图让我的authenticationInterceptor忽略我的登录操作的showLogin方法: <interceptors> <interceptor name="authorizationInterceptor" class="org.companyname.struts.interceptor.AuthorizationInterceptor"/>
<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>
真的
错误
显示登录
/login.jsp
但是,每次我转发到loginInitial时,拦截器都会抓住它,即使我的showLogin方法被排除在外
我已经检查了命名问题,并尝试在操作中的interceptor ref中放置几个不同的值,但似乎没有任何效果
当我转到LoginTial时,跳过授权拦截器的正确方法是什么?我认为我的问题是我正在使用的拦截器类型,抽象拦截器。所以,我只是在我不希望被拦截的操作上使用不同的拦截器堆栈:
<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>
真的
错误
真的
错误
/login.jsp
我认为我的问题在于我使用的拦截器的类型,即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>
真的
错误
真的
错误
/login.jsp
我对你的拦截器一无所知,所以不可能真正提供帮助。它是一个MethodFilterInterceptor
?是什么让你认为AbtractInterceptor
有一个excludeMethods
参数?这来自MethodFilterInterceptor
。我下面的示例详细介绍了AbstractInterceptor的使用,并显示了所作用的excludeMethods属性。坏榜样!我对你的拦截器一无所知,所以不可能真正帮助你。它是一个MethodFilterInterceptor
?是什么让你认为AbtractInterceptor
有一个excludeMethods
参数?这来自MethodFilterInterceptor
。我下面的示例详细介绍了AbstractInterceptor的使用,并显示了所作用的excludeMethods属性。坏榜样!