gpt4 book ai didi

java - 记录url导航历史记录

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:15 25 4
gpt4 key购买 nike

目标:用户尝试在未经身份验证的情况下访问页面。网站重定向到登录页面,当他们输入详细信息时,他们会返回到他们尝试访问的页面。

我有一个过滤器,用于记录用户在 session 中最后访问的 URL。下面的代码是我如何获取uri。

String uri = request.getRequestURI().toString();
String queryString = request.getQueryString();
String completeUri = uri;
if (queryString != null)
{
completeUri += "?" + queryString;
}

在实践中,这个过滤器接缝捕捉外部CSS文件、页面上的单个图像等,所以大约一半的时间它工作,一半的时间它指向图像或CSS文件。

过滤器的映射是...

<filter>
<filter-name>ComprehensiveFilter</filter-name>
<filter-class>core.website.control.filter.ComprehensiveFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ComprehensiveFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

所以问题是。为什么我的代码存储图像和外部文件而不是用户刚刚访问的 URL?我认为这与我的过滤器映射有关。

最佳答案

仅当您检测到未经授权的访问并重定向到登录页面时,才应使用此代码。你应该将它作为参数传递,例如 response.sendRedirect("login.jsp?" + completeUri)

现在,如果过滤器应用于每个资源(正如您所做的那样),则包含在 login.jsp 中的图像和 css 文件将触发该过滤器。您必须从该重定向中排除login.jsp 本身(否则您将进入循环),并且还必须排除css 文件。这取决于您的 URL 方案。

  • 如果您的所有页面都是 .jsp ,然后将过滤器映射到 *.jsp
  • 如果您的操作是通过单个 servlet(例如调度程序 servlet),则将过滤器映射到该 servlet(而不是 <uri-pattern> set <servlet-name> )
  • 如果您有“漂亮的网址”,则(在过滤器中)检查请求的资源是否以 .css 结尾, .png , .gif等等,并且不输入重定向逻辑。

关于java - 记录url导航历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6757653/

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