package com.ctrip.framework.apollo.portal.spi.ctrip; import com.ctrip.framework.apollo.portal.component.config.PortalConfig; import com.ctrip.framework.apollo.portal.spi.LogoutHandler; import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class CtripLogoutHandler implements LogoutHandler { @Autowired private PortalConfig portalConfig; @Override public void logout(HttpServletRequest request, HttpServletResponse response) { //将session销毁 HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } Cookie cookie = new Cookie("memCacheAssertionID", null); //将cookie的有效期设置为0,命令浏览器删除该cookie cookie.setMaxAge(0); cookie.setPath(request.getContextPath() + "/"); response.addCookie(cookie); //重定向到SSO的logout地址 String casServerUrl = portalConfig.casServerUrlPrefix(); String serverName = portalConfig.portalServerName(); try { response.sendRedirect(casServerUrl + "/logout?service=" + serverName); } catch (IOException e) { throw new RuntimeException(e); } } }