[ 
https://issues.apache.org/jira/browse/ISIS-1169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dan Haywood resolved ISIS-1169.
-------------------------------
    Resolution: Fixed

> Simplify IsisSessionFilter, make more resilient to possible leakage of 
> IsisSession on thread-local, also allow RO to force a logout
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: ISIS-1169
>                 URL: https://issues.apache.org/jira/browse/ISIS-1169
>             Project: Isis
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: core-1.8.0
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>            Priority: Minor
>             Fix For: 1.9.0
>
>
> This ticket has been prompted by a report from Nacho [1] about a session 
> being left open.   Note that Nacho's app (working with Oscar Bou) doesn't use 
> the wicket viewer, instead they have their own proprietary viewer based on 
> Wavemaker.
> Even so, for normal operation the IsisSessionFilter is used for the Restful 
> Objects API, so this issue could arise more widely.
> Nacho suggested a possible small improvement, though he reported that didn't 
> completely fix the issue.  Looking into the code in more detail, it would 
> seem that the issue can arise if the closeSession() is not called somehow, 
> perhaps from an NPE or other RuntimeException being thrown.
> Also looking at IsisSessionFilter, it seems that this code is more complex 
> than required; the SessionState enum only ever takes the value of UNDEFINED.  
> So this can be simplified.
> At the same time (mostly for testing this but also since it is overdue) this 
> seems like a good opportunity to introduce the ability to "logout" of RO.  
> After some experimentation, have decided to implement by introducing a new 
> non-standard /user/logout resource to RO, and using redirect and a special 
> query string to tell the IsisSessionFilter to respond with a 401.  It doesn't 
> seem to be possible to do better than this for a pure server-side solution 
> (see eg [2])
> I've also decided - belt and braces - to get rid of the fail-fast 
> EXPLICIT_CLOSE policy for SessionClosePolicy and instead always use 
> AUTO_CLOSE.  That way if - for some reason - the session is left open on a 
> thread, then it will be automatically closed the next time that thread is 
> reused.  If my above refactoring is ok then this should never happen, but I'm 
> taking the view that I'd rather the code is resilient to a bug elsewhere (and 
> live with a bit of memory leakage) than to blow up (as it currently does).
> [1] http://isis.markmail.org/thread/2dn7tja3r466yd2m
> [2] 
> http://stackoverflow.com/questions/233507/how-to-log-out-user-from-web-site-using-basic-authentication



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to