Java 用于身份验证问题的应用程序范围筛选器

Java 用于身份验证问题的应用程序范围筛选器,java,servlets,servlet-filters,Java,Servlets,Servlet Filters,我正在努力学习过滤器的使用。我通过指定url模式创建了一个应用程序范围的过滤器,如下所示: <filter> <display-name>AuthenticationFilter</display-name> <filter-name>AuthenticationFilter</filter-name> <filter-class>learn.filters.AuthenticationFilter&

我正在努力学习过滤器的使用。我通过指定url模式创建了一个应用程序范围的过滤器,如下所示:

<filter>
    <display-name>AuthenticationFilter</display-name>
    <filter-name>AuthenticationFilter</filter-name>
    <filter-class>learn.filters.AuthenticationFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>AuthenticationFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

这段代码运行良好,可以对用户进行身份验证,但不会导入mylogin.jsp页面上的任何额外资源(如js文件),因为每个请求都返回登录页面。这意味着,如果用户未经身份验证,我将无法访问我的web应用程序的任何资源,如captcha、js、css文件。请注意

过滤器已设置为映射到-everything-。也许您只想将它映射到*.jsp,这样它就不会触发html文件、javascript文件、css文件、图像等静态资源。

在doFilter方法中添加模式匹配以跳过筛选

您可以为您的.js和.css等创建一个模式匹配,然后跳过它们


您还可以检查“应用程序范围”的身份验证过滤器是否不可信?我不应该使用这样的映射吗?很好的答案。谢谢,我希望在这种情况下不会有安全问题。你指的是哪种安全?
<welcome-file-list>
       <welcome-file>/WEB-INF/jsp/home.jsp</welcome-file>
</welcome-file-list>
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req=(HttpServletRequest)request;
    HttpServletResponse res=(HttpServletResponse)response;
    String username=(String)req.getSession().getAttribute("username");
    if(username==null && req.getParameter("username")==null){
        req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
    }else{
        String user=req.getParameter("username");
        String pass=req.getParameter("password");
        if(user==null){
            req.getRequestDispatcher("/WEB-INF/jsp/home.jsp").forward(request, response);
        }else{
            if(user.equals(pass)){
                req.getSession().setAttribute("username", user);
                res.sendRedirect("home");
            }
        }
    }