@Override public GeoServerSecurityFilter createFilter(SecurityNamedServiceConfig config) { return new GeoServerLogoutFilter(); } }
@Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; boolean doLogout = false; for (String pathInfo : pathInfos) { if (getRequestPath(request).startsWith(pathInfo)) { doLogout = true; break; } } if (doLogout) doLogout(request, response); }
chain = new MockFilterChain(); logoutFilter.doFilter(request, response, chain); assertTrue(response.getStatus() == MockHttpServletResponse.SC_MOVED_TEMPORARILY); tmp = response.getHeader("Location");
/** * Convenience method for {@link GeoServerLogoutFilter#doLogout(HttpServletRequest, * HttpServletResponse, String...)} * * @param manager * @param request * @param response * @param skipHandlerName * @throws IOException * @throws ServletException */ public void doLogout( GeoServerSecurityManager manager, HttpServletRequest request, HttpServletResponse response, String... skipHandlerName) throws IOException, ServletException { GeoServerLogoutFilter filter = (GeoServerLogoutFilter) manager.loadFilter(GeoServerSecurityFilterChain.FORM_LOGOUT_FILTER); if (filter == null) { LOGGER.warning( "Cannot find filter: " + GeoServerSecurityFilterChain.FORM_LOGOUT_FILTER); return; } filter.doLogout(request, response, skipHandlerName); } }
throws IOException { List<LogoutHandler> result = new ArrayList<LogoutHandler>(); SortedSet<String> logoutFilterNames = getSecurityManager().listFilters(LogoutHandler.class); logoutFilterNames.removeAll(Arrays.asList(skipHandlerName)); Set<String> handlerNames = new HashSet<String>(); getSecurityManager().getSecurityConfig().getFilterChain(); for (RequestFilterChain requestChain : chain.getRequestChains()) { for (String filterName : requestChain.getFilterNames()) { result.add((LogoutHandler) getSecurityManager().loadFilter(handlerName));
public void doLogout( HttpServletRequest request, HttpServletResponse response, String... skipHandlerName) throws IOException, ServletException { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null) { List<LogoutHandler> logoutHandlers = calculateActiveLogoutHandlers(skipHandlerName); for (LogoutHandler h : logoutHandlers) { h.logout(request, response, authentication); } RememberMeServices rms = securityManager.getRememberMeService(); ((LogoutHandler) rms).logout(request, response, authentication); logoutHandler.logout(request, response, authentication); } String redirectUrl = (String) request.getAttribute(LOGOUT_REDIRECT_ATTR); if (StringUtils.hasLength(redirectUrl)) { SimpleUrlLogoutSuccessHandler h = new SimpleUrlLogoutSuccessHandler(); h.setDefaultTargetUrl(redirectUrl); h.onLogoutSuccess(request, response, authentication); return; } logoutSuccessHandler.onLogoutSuccess(request, response, authentication); }
logoutFilter.doFilter(request, response, chain); assertTrue(response.getStatus() == MockHttpServletResponse.SC_MOVED_TEMPORARILY); tmp = response.getHeader("Location");
logoutFilter.doFilter(request, response, chain); assertEquals(HttpServletResponse.SC_OK, response.getErrorCode()); assertTrue(response.wasRedirectSent());