gpt4 book ai didi

java - Java 和 Javascript 中的登录页面重定向

转载 作者:行者123 更新时间:2023-12-02 05:30:13 25 4
gpt4 key购买 nike

好的,我有一个有趣的登录页面重定向案例。
我的网络服务有一个登录页面(login.html),其中包含一些 JavaScript 来处理登录并重定向到硬编码的“默认”页面。 Web 服务是用 Java 编写的,带有 Servlet 过滤器,如果用户未经身份验证,则处理重定向(因此,如果用户尝试在未登录的情况下访问 domain/statistics ,他们将被定向到 domain/login .html)。来自 protected 服务的重定向有效:我可以重定向到登录页面,一旦用户通过身份验证,将其重定向到默认页面。但是,我在重定向到上一页时遇到问题。
我知道这通常是通过 Javascript 中的参数 document.referrer 来处理的,我已经尝试过了,但是由于 Java 使用 response.sendRedirect 进行重定向,Referer header 是未发送。

如何让这两个方面重定向到之前调用的页面?我是否需要在 Javascript 端、Java 端或两者上添加一些内容?

最佳答案

我所做的是将原始(重定向)URL 放入登录表单上的隐藏输入字段中。进行身份验证的代码应该只检查该参数,如果它不为空,则可以在建立 session 后重定向。

你必须小心这样做,以防止 XSS 攻击等,但这并不难,而且效果很好。

在我的框架(Stripes)中,我可以将原始 URL(取自 HttpServletRequest 对象,servlet 路径、“路径信息”和查询字符串的组合)推送到一个特殊的保存框中,这将导致框架在下一个请求时将其作为参数返回给我。如果没有这个,最简单的方法就是在重定向时添加 URL 作为参数。只需对原始尝试的 URL 进行 URL 编码,然后使用一些参数名称将其附加到重定向 URL 上。然后,在您的登录页面上,您只需检查它:

    <c:if test='${not empty param.attemptedUrl}'>
<input type='hidden' name='attemptedUrl' value='${fn:escapeXml(param.attemptedUrl)}'>
</c:if>

然后,当提交登录表单时,您的登录操作也会获取该参数,并且可以根据需要对其进行操作。

关于java - Java 和 Javascript 中的登录页面重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6412428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com