You have to realize that both swarm and acegi keep a copy of the
logged in user. So you have to logoff at 2 places.
You could use a logoff page but imo it would be better to do the
logging off in the link itself. Something like:
Link logoff = new Link("logoff")
                {

                        private static final long serialVersionUID = 1L;

                        public void onClick()
                        {
                                WaspSession waspSession = 
((WaspSession)getSession());
                                if (waspSession.logoff(getLogoffContext()))
                                {

SecurityContextHolder.getContext().setAuthentication(null);
                                        // homepage is not allowed anymore so 
we end up at the loginpage
                                        
setResponsePage(Application.get().getHomePage());

                                }
                                else
                                        error("A problem occured during the 
logoff process, please try
again or contact support");
                        }
                };
                add(logoff);

By placing this link on your basepage all pages extending from
basepage will have a logoff button.

Maurice
On Mon, Jun 30, 2008 at 4:10 PM, David R Robison
<[EMAIL PROTECTED]> wrote:
> I am using Swarm with Acegi integration. Authentication and authorization
> work fine, but I am having trouble logging out. I use a link to a Logout
> class that implements the following code to log the user out.
>  public class LoggedOutPage extends SecureWebPage {
>   private static final long serialVersionUID = 1L;
>
>   /**
>    * Constructor.
>    */
>   public LoggedOutPage() {
>       super();
>       logout();
>       setResponsePage(MainPage.class);
>   }
>     /**
>    * log the user out.
>    */
>   public void logout() {
>       SecurityContextHolder.getContext().setAuthentication(null);
>       WebRequest webRequest = (WebRequest)getRequest();
>       webRequest.getHttpServletRequest().getSession().invalidate();
>   }
> }
>
> However, when I am redirected to the MainPage.class, the user is not asked
> to login again and the class throws a null pointer error when it tries to
> access the logged in user. Am I doing something wrong?
> Thanks, David
>
> --
>
> David R Robison
> Open Roads Consulting, Inc.
> 708 S. Battlefield Blvd., Chesapeake, VA 23322
> phone: (757) 546-3401
> e-mail: [EMAIL PROTECTED]
> web: http://openroadsconsulting.com
> blog: http://therobe.blogspot.com
> book: http://www.xulonpress.com/book_detail.php?id=2579
>
> This e-mail communication (including any attachments) may contain
> confidential and/or privileged material intended solely for the individual
> or entity to which it is addressed.  If you are not the intended recipient,
> you should immediately stop reading this message and delete it from all
> computers that it resides on. Any unauthorized reading, distribution,
> copying or other use of this communication (or its attachments) is strictly
> prohibited.  If you have received this communication in error, please notify
> us immediately.
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> 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]

Reply via email to