Servlets Servlet筛选器登录重定向无限循环
我正在试验servlet过滤器。我已经创建了两个JSP页面——主页和登录。 我要创建以下流: 在会话->重定向到登录页面时,在没有凭据的情况下访问主页 输入正确的凭据(与硬编码常量进行比较)时,重定向到主页 输入错误凭证时-再次重定向到登录页面 这是到目前为止我的代码,由于空检查,我在直接进入主页时遇到了无限循环的问题。在这种情况下,你能告诉我正确的方法吗Servlets Servlet筛选器登录重定向无限循环,servlets,login,infinite-loop,servlet-filters,Servlets,Login,Infinite Loop,Servlet Filters,我正在试验servlet过滤器。我已经创建了两个JSP页面——主页和登录。 我要创建以下流: 在会话->重定向到登录页面时,在没有凭据的情况下访问主页 输入正确的凭据(与硬编码常量进行比较)时,重定向到主页 输入错误凭证时-再次重定向到登录页面 这是到目前为止我的代码,由于空检查,我在直接进入主页时遇到了无限循环的问题。在这种情况下,你能告诉我正确的方法吗 package bg.filter.test; import java.io.IOException; import javax.serv
package bg.filter.test;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebFilter ("/pages/*")
public class LoginFilter implements Filter {
private static final String name = "admin";
private static final String pass = "123";
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
String name = request.getParameter("username");
String pass = request.getParameter("password");
if (name != null && pass != null) {
if (LoginFilter.name.equals(name) && LoginFilter.pass.equals(pass)) {
((HttpServletRequest) request).getSession().setAttribute("username", name);
((HttpServletRequest) request).getSession().setAttribute("password", pass);
((HttpServletResponse) response).sendRedirect("/FilterLoginTest/pages/Home.jsp");
} else {
((HttpServletResponse) response).sendRedirect("/FilterLoginTest/pages/Login.jsp");
}
} else {
name = (String)((HttpServletRequest) request).getSession().getAttribute("username");
if(name == null) {
((HttpServletResponse) response).sendRedirect("/FilterLoginTest/pages/Login.jsp");
}
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
我不知道你为什么要这样实施 看看JAAS 此外,如果您需要实现此筛选器,登录后将用户对象放入会话中是一种常见行为,仅筛选器将针对null对其进行测试, 如果是关于授权的,您将对照预定义的角色列表检查url,以传递请求或重定向到未经授权的页面