When I receive a request on an expired session it is currently handled by our
authentication filter
      onAccessDenied(ServletRequest request, ServletResponse response)
which just sends a 401 (unauthorized) as a response.

Now I would like to add additional information ("session expired") to the
response.

Now the question is what would be an easy&clean way to implement this.


> Dominic Farr <[email protected]> hat am 6. März 2014 um 11:37 geschrieben:
> 
>  Not sure I understand. What sort of information do you need to add? Add to
> what? The subject? The response?
> 
>  You have access to the subject anywhere you like with
> SecurityUtils.getSubject()
> 
>  In the listener, when onExpiration is called you can use
> SecurityUtils.getSubject() to grab the subject. Will that work?
> 
> 
> 
> 
>  On 6 March 2014 09:56, Steve B <[email protected]
> <mailto:[email protected]> > wrote:
>    > > 
> >    That's right, I can attach to onExpiration(Session session). But how do I
> > pass the info to the subject such that I can query this flag in the
> > onAccessDenied method ?
> > <http://shiro.apache.org/static/current/apidocs/src-html/org/apache/shiro/session/SessionListener.html#line.58>
> > 
> > 
> > 
> > 
> >     > > > Dominic Farr < [email protected]
> >     > > > <mailto:[email protected]> > hat am 6. März 2014 um 10:43
> >     > > > geschrieben:
> > > 
> > >     yes. shiro has session listener.
> > > 
> > >     
> > > <http://shiro.apache.org/static/current/apidocs/org/apache/shiro/session/SessionListener.html>
> > > 
> > > 
> > >     On 6 March 2014 09:38, Steve B <[email protected]
> > > <mailto:[email protected]> > wrote:
> > >       > > > >       Hi,
> > > > 
> > > >       is there an easy way to detect if a session has expired ?
> > > > 
> > > >       I got a sub-class of FormAuthenticationFilter where I override
> > > > onAccessDenied and would like to add some additional info on why a 401
> > > > is returned.
> > > > 
> > > >       protected boolean onAccessDenied(ServletRequest request,
> > > > ServletResponse response) throws Exception
> > > >       {
> > > >          ...
> > > >           // issue 401
> > > >           httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
> > > >       }
> > > > 
> > > >       I thought about using a session listener, but it is not clear to
> > > > me where I should store expiration/stop info.
> > > > 
> > > > 
> > > >       Thanks,
> > > > 
> > > >       Steve
> > > >     > > > 
> > >    > > 
> > 
> >  > 

Reply via email to