LogoutEndpoint.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package org.maxkey.web.endpoint;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.maxkey.authn.realm.AbstractAuthenticationRealm;
  5. import org.maxkey.web.WebConstants;
  6. import org.maxkey.web.WebContext;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.beans.factory.annotation.Qualifier;
  11. import org.springframework.security.web.savedrequest.SavedRequest;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.servlet.ModelAndView;
  15. @Controller
  16. public class LogoutEndpoint {
  17. private static Logger _logger = LoggerFactory.getLogger(LogoutEndpoint.class);
  18. @Autowired
  19. @Qualifier("authenticationRealm")
  20. AbstractAuthenticationRealm authenticationRealm;
  21. @RequestMapping(value={"/logout"})
  22. public ModelAndView logout(HttpServletRequest request, HttpServletResponse response){
  23. ModelAndView modelAndView = new ModelAndView();
  24. authenticationRealm.logout(response);
  25. SavedRequest firstSavedRequest = (SavedRequest)WebContext.getAttribute(WebConstants.FIRST_SAVED_REQUEST_PARAMETER);
  26. String reLoginUrl=WebContext.getHttpContextPath()+"/login";
  27. if(firstSavedRequest!=null){
  28. reLoginUrl= firstSavedRequest.getRedirectUrl();
  29. }
  30. _logger.debug("re Login URL : "+ reLoginUrl);
  31. modelAndView.addObject("reloginUrl",reLoginUrl);
  32. request.getSession().invalidate();
  33. modelAndView.setViewName("loggedout");
  34. return modelAndView;
  35. }
  36. }