I haven't tried the technique you are using. I found it easier to create an object with references to everything else my application needs and store that in the session. The object then implements HttpSessionBindingListener to detect that the session is being destroyed. This does not require anything be added to web.xml. Since it is your object being called I should think you'd have access to everything you need without even going to the authentication context.

I'm not sure how to retrieve the authentication context manually. You will have to read the code in the authentication framework block unless someone can provide a code snippet.

Ralph



Stefan Pietschmann wrote:

I asked something similar in the users list some time ago but got no response, so you’re my last chance ;)

As usual we’re storing information in the AuthenticationContext. So far this information has been written on disk with every request processed by the server.

Due to several reasons we’ve decided to just write it to a file everytime the user logs out OR the session times out. Thus it is not sufficient to add the method to the logout matcher, because the data will be lost if the user just closes is browser.

I decided to use an HTTPSessionListener which I added to Cocoon’s web.xml. This works fine so far, but it only allows me to retrieve the user’s HTTPSession in the method sessionDestroyed(HttpSessionEvent event). From there I can get the the ServletContext, but I see no way to access the AuthenticationContext? Is it accessable at all? I tought one of these should work, but both are null.

AuthenticationContext authContext = (AuthenticationContext)session.getServletContext().getContext("authentication");

AuthenticationContext authContext2 = (AuthenticationContext)session.getServletContext().getContext(AuthenticationConstants.SESSION_CONTEXT_NAME)

Cheers,

Stefan

Reply via email to