diff --git a/src/main/java/de/thm/arsnova/LoginController.java b/src/main/java/de/thm/arsnova/LoginController.java index 011769f5c20498065c206bcdcd1abbc27b9b9f5d..aaca84f4877bd4608f0e207c9c9a498a129d17b3 100644 --- a/src/main/java/de/thm/arsnova/LoginController.java +++ b/src/main/java/de/thm/arsnova/LoginController.java @@ -115,12 +115,12 @@ public class LoginController { } @RequestMapping(method = RequestMethod.GET, value = "/logout") - public ModelAndView doLogout(final HttpServletRequest request) { + public View doLogout(final HttpServletRequest request) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); request.getSession().invalidate(); if (auth instanceof CasAuthenticationToken) { - return new ModelAndView("redirect:/j_spring_cas_security_logout"); + return new RedirectView("/j_spring_cas_security_logout"); } - return new ModelAndView("redirect:/"); + return new RedirectView(request.getHeader("referer") != null ? request.getHeader("referer") : "/" ); } } diff --git a/src/test/java/de/thm/arsnova/controller/LoginControllerTest.java b/src/test/java/de/thm/arsnova/controller/LoginControllerTest.java index 3c1e97a4ba7c9d99ec0bd34b3d3d4f28f9c666d4..8f771dbf72e1bdd1931916cee0bfb59341771a06 100644 --- a/src/test/java/de/thm/arsnova/controller/LoginControllerTest.java +++ b/src/test/java/de/thm/arsnova/controller/LoginControllerTest.java @@ -92,4 +92,27 @@ public class LoginControllerTest extends AbstractSpringContextTestBase { assertEquals("Guest1234567890", ((User)mav.getModel().get("user")).getUsername()); } + @Test + public void testLogoutWithoutRedirect() throws Exception { + request.setMethod("GET"); + request.setRequestURI("/logout"); + final ModelAndView mav = handle(request, response); + assertNotNull(mav); + assertNotNull(mav.getView()); + RedirectView view = (RedirectView) mav.getView(); + assertEquals("/", view.getUrl()); + } + + @Test + public void testLogoutWithRedirect() throws Exception { + request.setMethod("GET"); + request.setRequestURI("/logout"); + request.addHeader("referer", "/dojo-index.html"); + + final ModelAndView mav = handle(request, response); + assertNotNull(mav); + assertNotNull(mav.getView()); + RedirectView view = (RedirectView) mav.getView(); + assertEquals("/dojo-index.html", view.getUrl()); + } }