2 * Copyright (C) 2007-2012 Mathieu Baudier
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.security
.ui
.rap
;
18 import javax
.security
.auth
.login
.LoginException
;
20 import org
.apache
.commons
.logging
.Log
;
21 import org
.apache
.commons
.logging
.LogFactory
;
22 import org
.eclipse
.equinox
.security
.auth
.ILoginContext
;
23 import org
.eclipse
.rwt
.RWT
;
24 import org
.eclipse
.rwt
.lifecycle
.IEntryPoint
;
25 import org
.eclipse
.ui
.PlatformUI
;
26 import org
.springframework
.security
.context
.SecurityContextHolder
;
29 * RAP entry point which logs out the currently authenticated user
31 public class LogoutEntryPoint
implements IEntryPoint
{
32 private final static Log log
= LogFactory
.getLog(LogoutEntryPoint
.class);
35 * From org.springframework.security.context.
36 * HttpSessionContextIntegrationFilter
38 protected static final String SPRING_SECURITY_CONTEXT_KEY
= "SPRING_SECURITY_CONTEXT";
41 public int createUI() {
43 PlatformUI
.createDisplay();
45 final ILoginContext loginContext
= SecureRapActivator
46 .createLoginContext(SecureRapActivator
.CONTEXT_SPRING
);
48 loginContext
.logout();
49 } catch (LoginException e
) {
53 RWT
.getRequest().getSession()
54 .removeAttribute(SPRING_SECURITY_CONTEXT_KEY
);
55 SecurityContextHolder
.clearContext();
56 RWT
.getRequest().getSession().setMaxInactiveInterval(1);
58 if (log
.isDebugEnabled())
59 log
.debug("Logged out session " + RWT
.getSessionStore().getId());