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 0000000000000000000000000000000000000000..08d947c82eb9444359b124e7fa7c65c9f19712f4 --- /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 da87bc2ee2ac9a31aa97e6da7f2973c88af0af71..231e37488d18a450bfe7065ec93b882f84bc1fb9 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 1e630afbac3934ca77b4d73c75dd8a2800e342e2..665e0d504b56cdc87b49bd9e19465e33ce2d5f3c 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">