Перенаправление на фактическую страницу, что они просматривали до входа в систему

Если мой пользователь перенаправляется на страницу входа в систему, как сделать так, чтобы после входа в систему они перенаправлялись на страницу -original-destination (та, на которую они сначала нажали)?

Ответы

Ответ 1

Передайте первоначально запрошенный URL-адрес в качестве параметра запроса при перенаправлении на страницу входа.

String from = URLEncoder.encode(request.getRequestURI(), "UTF-8");

if (request.getQueryString() != null) {
    from += "?" + request.getQueryString();
}

response.sendRedirect("login.jsp?from=" + from);

В login.jsp передать его в форму отправки формы входа в качестве скрытого поля ввода.

<input type="hidden" name="from" value="${fn:escapeXml(param.from)}" />

(примечание: fn:escapeXml() не позволяет XSS при повторном отображении управляемых пользователем данных в HTML)

В действии входа проверьте, есть ли он там, а затем обрабатывать соответственно.

String from = request.getParameter("from");

if (from != null && !from.isEmpty()) {
    response.sendRedirect(from);
} else {
    response.sendRedirect("home.jsp");
}