[ 
https://issues.apache.org/jira/browse/WW-4873?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16247720#comment-16247720
 ] 

Yasser Zamani commented on WW-4873:
-----------------------------------

{quote}
I assume it needs to stay in there for as long as it takes for the interceptor 
to run across every potential request using the same session.
{quote}

No, not at all! I found all usages of {{InvocationSessionStore}} and is only 
used in {{TokenSessionStoreInterceptor}} and it's {{loadInvocation()}} method 
is only used in {{handleInvalidToken()}} method. So, 
{{ActionContext.getContext().getSession().get("org.apache.struts2.util.InvocationSessionStore.invocationMap")}}
 is only used when user posted token is not valid (e.g. someone else tries a 
CSRF attack) and Struts returns previous result. When you delete it, Struts 
simply returns {{invalid.token}}.

So the conclusion is, the difference only occurs when user posts a not valid 
token (usually does not occur except on security attacks or duplicated posts) 
and the difference is Struts returns {{invalid.token}} instead of previous 
executed result. It seems no any very bad thing occurs.

> NotSerializableException - org.apache.struts2.dispatcher.StrutsRequestWrapper
> -----------------------------------------------------------------------------
>
>                 Key: WW-4873
>                 URL: https://issues.apache.org/jira/browse/WW-4873
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.5.13
>            Reporter: Michael Hum
>             Fix For: 2.5.x
>
>
> We are attempting to test session replication on our websphere servers but 
> run into the given error when websphere tries to serialize the session. 
> {code}
> [10/18/17 10:33:38:094 EDT] 00000335 WASSession    E MTMBuffWrapper getBytes 
> write object exception. e= java.io.NotSerializableException: 
> org.apache.struts2.dispatcher.StrutsRequestWrapper
> {code}
> It appears the ActionInvocation stores the ActionContext which stores the 
> offending property: com.opensymphony.xwork2.dispatcher.HttpServletRequest --> 
> StrutsRequestWrapper 
> After a little digging we narrowed it down to our use of the 
> TokenSessionStoreInterceptor which stores the value in the session and uses 
> it to redirect the failed request to the original one. Is this 
> intended/expected? Or is there no requirement that the contents in the 
> session be serializable - in which case we would have to look to our own 
> solution.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to