+ Subject subject = cmsSession.getSubject();
+ try {
+ //
+ // LOGIN
+ //
+ new ArgeoLoginContext(KernelHeader.LOGIN_CONTEXT_ANONYMOUS, subject)
+ .logout();
+ LoginContext loginContext = new ArgeoLoginContext(
+ KernelHeader.LOGIN_CONTEXT_USER, subject, this);
+ loginContext.login();
+ } catch (LoginException e1) {
+ try {
+ new ArgeoLoginContext(KernelHeader.LOGIN_CONTEXT_ANONYMOUS,
+ subject).login();
+ } catch (LoginException e) {
+ throw new CmsException("Cannot authenticate anonymous", e1);
+ }
+ throw new CmsException("Cannot authenticate", e1);
+ }
+ close();
+ dispose();
+ cmsSession.authChange();
+ }
+
+ protected void logout() {
+ final CmsSession cmsSession = (CmsSession) getDisplay().getData(
+ CmsSession.KEY);
+ Subject subject = cmsSession.getSubject();
+ try {
+ //
+ // LOGOUT
+ //
+ new ArgeoLoginContext(KernelHeader.LOGIN_CONTEXT_USER, subject)
+ .logout();
+ new ArgeoLoginContext(KernelHeader.LOGIN_CONTEXT_ANONYMOUS, subject)
+ .login();
+ } catch (LoginException e1) {
+ throw new CmsException("Cannot authenticate anonymous", e1);
+ }