/ / Struts 2 sessionToken interceptor leitet immer zum Fehler um - struts2, Double-Submit-Prevention

Struts 2 sessionToken-Interceptor leitet immer auf Fehler um - struts2, doppelte Übergabe-Verhinderung

Ich habe versucht, den tokenSession-Interceptor zum Laufen zu bringen (Struts 2.0.14), bekomme aber immer die Warnungen:

2013-03-13 08:32:09,395 [17] DEBUG Intercepting invocation to check for valid transaction token. | org.apache.struts2.interceptor.TokenSessionStoreInterceptor.doIntercept(128)
2013-03-13 08:32:09,395 [17] WARN  Could not find token name in params. | org.apache.struts2.util.TokenHelper.getTokenName(124)
2013-03-13 08:32:09,396 [17] DEBUG no token name found -> Invalid token  | org.apache.struts2.util.TokenHelper.validToken(154)
2013-03-13 08:32:09,397 [17] WARN  Could not find token name in params. | org.apache.struts2.util.TokenHelper.getTokenName(124)
2013-03-13 08:32:09,397 [17] WARN  Could not find token mapped to token name null | org.apache.struts2.util.TokenHelper.getToken(105)
2013-03-13 08:32:09,398 [17] DEBUG Forwarding to location /WEB-INF/view/support/TokenError.jsp | org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(113)

Die Datei struts.xml weist die folgende Interceptor-Konfiguration auf:

            <package name="survey" extends="struts-default">
<result-types>
<result-type name="csv"
class="webapp.CsvResultType"/>
</result-types>

<interceptors>
<interceptor name="log"
class="struts.LoggingInterceptor"/>
<interceptor name="formAuthentication"
class="security.FormAuthenticationInterceptor"/>
<interceptor-stack name="default">
<interceptor-ref name="log"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="formAuthentication"/>
<!--interceptor-ref name="chain"/>-->
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="params"/>
</interceptor-stack>
<interceptor-stack name="defaultTokenStack">
<interceptor-ref name="tokenSession"/>
<interceptor-ref name="default"/>
</interceptor-stack>

</interceptors>

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

<!--  -->

<global-results>
<result name="blank">/WEB-INF/view/support/Blank.jsp</result>
<result name="error">/WEB-INF/view/support/Error.jsp</result>
<result name="insufficientPrivileges">/WEB-INF/view/support/InsufficientPrivileges.jsp</result>
<!--result name="file" type="file"></result-->
</global-results>

</package>

Mit den Aktionsdefinitionen:

<package name="respondent" namespace="/respondent" extends="survey">
<action name="*" class="controller.respondent.{1}Action">
<interceptor-ref name="defaultTokenStack"/>
<result name="list">/WEB-INF/view/respondent/{1}List.jsp</result>
<result name="edit">/WEB-INF/view/respondent/{1}Edit.jsp</result>
<result name="view">/WEB-INF/view/respondent/{1}View.jsp</result>
<result name="success">/WEB-INF/view/respondent/{1}.jsp</result>
<result name="invalid.token">/WEB-INF/view/support/TokenError.jsp</result>
</action>
</package>

Der JSP hat das Token-Tag:

<s:form action="FunctionSummary.action" method="post">
<s:token/>

<table class="buttons">
<tr>
<s:if test="surveyStarted">
<td><s:submit value="Resume Survey"/></td>
</s:if>
<s:else>
<td><s:submit value="Start Survey"/></td>
</s:else>

</tr>
</table>

</s:form>

Jeder Zugriff auf diese Seite führt immer zu einer Umleitung zum Ergebnis invalid.token und den obigen Warnungen.

Ich habe bestätigt, dass die Seitenquelle ohne konfigurierten Interceptor zwar über das Token verfügt, der sessionToken-Interceptor es jedoch nicht anzeigen kann.

Jede Hilfe wäre sehr dankbar ...

Vielen Dank

Antworten:

1 für die Antwort № 1

Versuchen Sie, Ihre <s:token/> tag in deine <table> Stichworte. Ich habe das gleiche Problem wie Sie. Und nachdem ich gesetzt habe <s:token/> in <table> Tag-Problem behoben.

<s:form action="" id = "" theme="simple" method = "post">
<table id = "" border="1" width="200">
<s:token/>  <!-- In the table tag -->

</table>
</s:form>