diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java index 95483dbfd78cc42393420a0e1de14109ec1a97cc..8541728e2c8b694c46100130e94a312ff8a60e4a 100644 --- a/src/main/java/de/thm/arsnova/controller/LoginController.java +++ b/src/main/java/de/thm/arsnova/controller/LoginController.java @@ -235,15 +235,20 @@ public class LoginController extends AbstractController { failureUrl = "/"; } - /* Workaround until a solution is found to do a redirect which is - * relative to the server root instead of the context path */ - String port; + String serverUrl = request.getScheme() + "://" + request.getServerName(); + /* Handle proxy + * TODO: It might be better, to support the proposed standard: http://tools.ietf.org/html/rfc7239 */ + int port = "".equals(request.getHeader("X-Forwarded-Port")) + ? Integer.valueOf(request.getHeader("X-Forwarded-Port")) : request.getServerPort(); if ("https".equals(request.getScheme())) { - port = 443 != request.getServerPort() ? ":" + request.getLocalPort() : ""; + if (443 != port) { + serverUrl = serverUrl + ":" + String.valueOf(port); + } } else { - port = 80 != request.getServerPort() ? ":" + request.getLocalPort() : ""; + if (80 != port) { + serverUrl = serverUrl + ":" + String.valueOf(port); + } } - String serverUrl = request.getScheme() + "://" + request.getServerName() + port; request.getSession().setAttribute("ars-login-success-url", serverUrl + successUrl); request.getSession().setAttribute("ars-login-failure-url", serverUrl + failureUrl);