我的身份验证过滤器有问题。当过滤器重定向到登录页面时,所有以前的页面(主页面)都显示在登录页面中。 如果我手动进入登录页面,它工作正常。
这是我的过滤器:
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(false);
String loginURL = req.getContextPath() + SiteMap.LOGIN_CONTROLLER;
boolean sessionCreated = session != null && !session.isNew();
if (sessionCreated) {
chain.doFilter(request, response);
} else {
res.sendRedirect(loginURL);
}
我还注意到,当过滤器重定向到登录页面时,浏览器栏中的 URL 保持不变。主要问题是我从登录页面的其他页面获取内容。不知道哪里出了问题。
最佳答案
在浏览器中更改 URl 并不取决于过滤器,而是取决于您调用页面/servlet 的方式。您可以通过两种方式调用您的 servlet/jsp
RequestDispatcher : 将控制权转移给同一请求下的其他人(相同的URL)
Send Redirect : 发起新请求(New Url)
注意:过滤器所做的只是对请求的验证
关于java - Servlet 过滤器重定向,url 未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18526672/