From 6ba81fcabc15cac40fc110970382e88a09b39b20 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt <code@dgerhardt.net> Date: Sat, 17 Jan 2015 12:44:18 +0100 Subject: [PATCH] Fix redirection behind a proxy server --- .../thm/arsnova/controller/LoginController.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java index 95483dbf..8541728e 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); -- GitLab