in src/main/java/org/apache/sling/auth/core/AuthUtil.java [423:472]
public static void sendRedirect(
final javax.servlet.http.HttpServletRequest request,
final javax.servlet.http.HttpServletResponse response,
final String target,
Map<String, String> params)
throws IOException {
checkAndReset(response);
StringBuilder b = new StringBuilder();
if (AuthUtil.isRedirectValid(request, target)) {
b.append(target);
} else if (request.getContextPath().length() == 0) {
b.append("/");
} else {
b.append(request.getContextPath());
}
if (params == null) {
params = new HashMap<>();
}
// ensure the login resource is provided with the redirect
if (params.get(Authenticator.LOGIN_RESOURCE) == null) {
String resource = request.getRequestURI();
if (request.getQueryString() != null) {
resource += "?" + request.getQueryString();
}
params.put(Authenticator.LOGIN_RESOURCE, resource);
}
b.append('?');
Iterator<Entry<String, String>> ei = params.entrySet().iterator();
while (ei.hasNext()) {
Entry<String, String> entry = ei.next();
if (entry.getKey() != null && entry.getValue() != null) {
try {
b.append(entry.getKey()).append('=').append(URLEncoder.encode(entry.getValue(), "UTF-8"));
} catch (UnsupportedEncodingException uee) {
throw new InternalError("Unexpected UnsupportedEncodingException for UTF-8");
}
if (ei.hasNext()) {
b.append('&');
}
}
}
response.sendRedirect(b.toString());
}