gpt4 book ai didi

java - 登录过滤器导致重定向循环

转载 作者:行者123 更新时间:2023-12-01 19:04:00 26 4
gpt4 key购买 nike

我正在使用 servlet 和 JSP 创建一个简单的 Web 应用程序。我正在实现一个过滤器,它检查用户是否已经登录,从字面上检查用户 session 是否处于 Activity 状态。如果 session 不存在,则必须将用户重定向到登录页面(index,jsp)

这是我在 web.xml 文件中的过滤器映射

 <web-app xmlns...>
<display-name>FilterTest</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<description></description>
<servlet-name>LoginController</servlet-name>
<servlet-class>LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/LoginController</url-pattern>
</servlet-mapping>
</web-app>

当用户尝试访问不同的页面时,LoginFilter 将检查 session 。如果 session 处于 Activity 状态,则用户将被重定向到所请求的页面,否则将被重定向到index.jsp。

我在这里面临的问题是,即使用户正在登录,LoginFilter也会检查 session (请求来自index.jsp,这是登录页)。所以我在这里看到的是,当用户登录时,控件转到 LoginFilter,由于尚未为该用户创建 session ,因此他被重定向回登录页面,该页面正在创建一个无限期的重定向循环。

如果请求来自 index.jsp,我想排除过滤器检查/ session 检查。

有什么办法可以实现这个目标吗?或者有什么方法可以识别请求页面是否是 index.jsp

更新:应用程序启动时的 URL 为 http://servername:port/FilterTest这里加载了index.jsp。

我正在 LoginController servlet 中验证登录,如果登录成功,该 servlet 会将用户重定向到 home.jsp(欢迎页面)。

谢谢..!

最佳答案

跳过您的 Filter检查登录页面

您需要检查requestedUrl,看看它是否不需要过滤器(对于LoginPage、CSS、图像、JS),然后只需执行

chain.doFilter(request, response);  

将初始化参数传递给Filter来自web.xml 来自init()创建 List<String> urls不需要过滤器检查现在在doFilter()检查 URL 是否是其中之一,然后简单地 chain.doFilter(request, response);

关于java - 登录过滤器导致重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10975364/

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