content: 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);
      }
    }
  }
  