Thank you very much for your comments on this topic Paul. Now, I understand the basics of using a filter, extending the base class and configuration in the web.xml file. But how can I use a filter in unison with Struts.
I am not seeing how I would use the filter. Are you implying that I should possibly use the filter to check for the existance of the session and "user" object? And if the session does not exist? use a redirect to the login page? So this filter would only look at incoming requests? Thanks, Scott -----Original Message----- From: Paul McCulloch [mailto:[EMAIL PROTECTED] Sent: Thursday, April 14, 2005 9:33 AM To: 'Struts Users Mailing List' Subject: RE: Handling Session Expiration Properly Hi Scott, I can't remeber if it was your question I replied to regarding authentication where I recommended using a filter to do this, rather than modifying the request processor. If it wasn't your question then I'd recommend a serach of the archives. If it was you - I still think modifying the request processor is not the best solution! Anyway - some comments on the solution you are working with... I suggest that you only create the user object and attach it to the session object when the user successfully logs in. The presence of a user object in session tells your application that there is a valid user - and who the user is. If the user's session expires then the next request they make will be for a new session (with no user) - so they will be sent to the login page. There is no need to change the signature of your base action. The user object is in session which can be obtained from the existing paramater "request" - there is no need to explicitly pass the user around. Changing the base action to manage security throws up some other pottential problems. If you start to use another action variant, such as DispatchAction, you won't have any security. If you really don't want to use Filters then I suggest that you modify the request processor to check that the user is logged in before calling your action, and send them to the login page if they aren't Seriously though - a filter is far easier (& web framework agnostic) way to handle this. HTH, and feel free to carry on beating this one... Paul > -----Original Message----- > From: Scott Purcell [mailto:[EMAIL PROTECTED] > Sent: 2005/14/04 15:04 > To: user@struts.apache.org > Subject: Handling Session Expiration Properly > > > Hello, > I hope I have not beaten this to death on this list, but I > have never gotten an answer that has served my interest. So I > rethought the question and I am reposting it now. > > The application I created, is a web-app in which a login is > required of a "username" and "password". Pretty standard > stuff. I am not using container authentication, I am just > going to a database and pulling out data based upon the entries. > > The way I configured this, is I extended the > RequestProcessor, and each time a user hits the Controller, I > check if there is a "user" object in the session. If there is > great. If not I create a new one and set a logged in boolean > to false. Now if the user has successfully logged in, I set > the logged in boolean to true. > > This step is where I ran into problems. I checked the FAQ on > session expiration handling, and the FAQs recommended > extending a base action class and checking for the logged in > flag. If the flag was not set, then I would throw a global > exception, throw them to the front door with a ActionMessage > stating "session expired". > > Now don't get me wrong this works, but by extending the > Action class I kind of screwed myself by not being able to > use a RequestDispatcher because now the signature of the > "subclassed action" was not the same as what the > requestDispatcher is looking for. When I extended the Action, > I added a check for the user flag: > eg: > public ActionForward executeAction(ActionMapping mapping, > ActionForm form, > HttpServletRequest request, > HttpServletResponse response, > AppObject appObject, > UserObject user) > throws Exception { > > > So to sum this up, when I am in the RequestProcessor, is > there anyway to find the Action they are going to, so I can > do my check of logged in? I am looking at the method > signature and do not see anything but a request and response > object here. > > Or is there another method I should be extending to find out > where they are going? Because if I can see that they are > going to an inside page, and their flag is set to "not logged > in", then I can send them to the front door with a message > stating "session expired" and not send the message to people > who are just hitting the front login page. > > If this does not make sense, please email me back. > > Thanks for your time, > Scott > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > Axios Email Confidentiality Footer Privileged/Confidential Information may be contained in this message. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person), you may not copy or deliver this message to anyone. In such case, you should destroy this message, and notify us immediately. If you or your employer does not consent to Internet email messages of this kind, please advise us immediately. Opinions, conclusions and other information expressed in this message are not given or endorsed by my Company or employer unless otherwise indicated by an authorised representative independent of this message. WARNING: While Axios Systems Ltd takes steps to prevent computer viruses from being transmitted via electronic mail attachments we cannot guarantee that attachments do not contain computer virus code. You are therefore strongly advised to undertake anti virus checks prior to accessing the attachment to this electronic mail. Axios Systems Ltd grants no warranties regarding performance use or quality of any attachment and undertakes no liability for loss or damage howsoever caused. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]