From 18d426cfa838aaaa685aa70d228ac878dddc0ac8 Mon Sep 17 00:00:00 2001 From: Julian Hochstetter <julian.hochstetter@mni.thm.de> Date: Mon, 10 Sep 2012 13:08:40 +0200 Subject: [PATCH] Task #3833 --- .../LoginAuthenticationSucessHandler.java | 27 +++++++++++++++++++ .../java/de/thm/arsnova/LoginController.java | 1 + .../webapp/WEB-INF/spring/spring-security.xml | 5 ++-- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 src/main/java/de/thm/arsnova/LoginAuthenticationSucessHandler.java diff --git a/src/main/java/de/thm/arsnova/LoginAuthenticationSucessHandler.java b/src/main/java/de/thm/arsnova/LoginAuthenticationSucessHandler.java new file mode 100644 index 000000000..08d947c82 --- /dev/null +++ b/src/main/java/de/thm/arsnova/LoginAuthenticationSucessHandler.java @@ -0,0 +1,27 @@ +package de.thm.arsnova; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; + +public class LoginAuthenticationSucessHandler extends SimpleUrlAuthenticationSuccessHandler { + + private String targetUrl; + + @Override + protected String determineTargetUrl(HttpServletRequest request, + HttpServletResponse response) { + HttpSession session = request.getSession(); + if (session == null || session.getAttribute("ars-referer") == null) { + return targetUrl; + } + String referer = (String) session.getAttribute("ars-referer"); + return referer + targetUrl; + } + + public void setTargetUrl(String targetUrl) { + this.targetUrl = targetUrl; + } +} diff --git a/src/main/java/de/thm/arsnova/LoginController.java b/src/main/java/de/thm/arsnova/LoginController.java index da87bc2ee..231e37488 100644 --- a/src/main/java/de/thm/arsnova/LoginController.java +++ b/src/main/java/de/thm/arsnova/LoginController.java @@ -75,6 +75,7 @@ public class LoginController { @RequestMapping(method = RequestMethod.GET, value = "/doLogin") public ModelAndView doLogin(@RequestParam("type") String type, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + request.getSession().setAttribute("ars-referer", request.getHeader("referer")); if("cas".equals(type)) { casEntryPoint.commence(request, response, null); } else if("twitter".equals(type)) { diff --git a/src/main/webapp/WEB-INF/spring/spring-security.xml b/src/main/webapp/WEB-INF/spring/spring-security.xml index 1e630afba..665e0d504 100644 --- a/src/main/webapp/WEB-INF/spring/spring-security.xml +++ b/src/main/webapp/WEB-INF/spring/spring-security.xml @@ -124,9 +124,8 @@ </constructor-arg> </bean> - <bean id="successHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler" - p:alwaysUseDefaultTargetUrl="false" - p:defaultTargetUrl="/#auth/checkLogin"/> + <bean id="successHandler" class="de.thm.arsnova.LoginAuthenticationSucessHandler" + p:targetUrl="#auth/checkLogin"/> <bean id="failureHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler"> -- GitLab