(注:version 4.1.0)java
cas serverui
<接口>LogoutManager List<LogoutRequest> performLogout(TicketGrantingTicket ticket); <實現>LogoutManagerImpl private boolean performBackChannelLogout(final LogoutRequest request) { try { final String logoutRequest = this.logoutMessageBuilder.create(request); final SingleLogoutService logoutService = request.getService(); logoutService.setLoggedOutAlready(true); LOGGER.debug("Sending logout request for: [{}]", logoutService.getId()); final LogoutHttpMessage msg = new LogoutHttpMessage(request.getLogoutUrl(), logoutRequest); LOGGER.debug("Prepared logout message to send is [{}]", msg); return this.httpClient.sendMessageToEndPoint(msg); } catch (final Exception e) { LOGGER.error(e.getMessage(), e); } return false; }
cas clientthis
攔截器:SingleSignOutFilter public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { final HttpServletRequest request = (HttpServletRequest) servletRequest; if (handler.isTokenRequest(request)) { handler.recordSession(request); } else if (handler.isLogoutRequest(request)) { handler.destroySession(request); // Do not continue up filter chain return; } else { log.trace("Ignoring URI " + request.getRequestURI()); } filterChain.doFilter(servletRequest, servletResponse); }