在登录前将他们正在查看的内容重定向回实际页面

Paw*_*wan 4 java jsp servlets

如果我的用户被重定向到登录页面,如何使其在登录后被重定向到-original-destination页面(他们首次点击的页面)?

Bal*_*usC 7

将最初请求的URL作为请求参数传递给重定向到登录页面.

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

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

response.sendRedirect("login.jsp?from=" + from);
Run Code Online (Sandbox Code Playgroud)

login.jsp,将其作为隐藏输入字段传递给登录表单提交目标.

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

(注意:fn:escapeXml()在HTML中重新显示用户控制的数据时,阻止您使用XSS)

在登录操作中,检查它是否存在然后相应地处理.

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

if (from != null && !from.isEmpty()) {
    response.sendRedirect(from);
} else {
    response.sendRedirect("home.jsp");
}
Run Code Online (Sandbox Code Playgroud)