From bb9b4d40a91290bcb92a5a45704482bd84e73a2e Mon Sep 17 00:00:00 2001 From: Julian Hochstetter <julian.hochstetter@mni.thm.de> Date: Tue, 11 Sep 2012 10:31:32 +0200 Subject: [PATCH] =?UTF-8?q?Task=20#3848:=20Ein=20Logout=20soll=20den=20Ben?= =?UTF-8?q?utzer=20korrekt=20zu=20ARSnova=20zur=C3=BCck=20leiten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/de/thm/arsnova/LoginController.java | 6 ++--- .../controller/LoginControllerTest.java | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/thm/arsnova/LoginController.java b/src/main/java/de/thm/arsnova/LoginController.java index 011769f5c..aaca84f48 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 3c1e97a4b..8f771dbf7 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()); + } } -- GitLab