我使用过滤器对用户非法登录进行过滤,但登录界面的验证码也被过滤了,如何才能让它不被过滤?
各位前辈,小弟求解

解决方案 »

  1.   

    唯一的办法 就是 在web.xml里面进行控制了,把过滤的文件都写上,不需要过滤的不要写,我现在是这样弄的,不知道 还有没有好的办法,等待高手。
      

  2.   

    将验证码的页面 与登录的页面与其它页面隔离起来,比如把这个两个放到woobRoot根目录下。然后建个page文件夹,将其它所有的页面放到page里,
    web.xml中配置过滤器
    <filter-name>IsLoginFilter</filter-name>
    <url-pattern>/page/*</url-pattern>这样就把登录与验证隔离了。
      

  3.   

    lz
    1.可以在过滤器中进行判断即可
      String currentURL = req.getRequestURI();
      String targetURL = currentURL.substring(currentURL.indexOf("/", 1));
      if (targetURL.startsWith("/admin")) {
       chain.doFilter(req, res);
       return;
      }
      if (!"/login.jsp".equals(targetURL) )) {//判断是不是请求登陆页面,如果是则放过
       if (session == null || session.getAttribute("username") == null) {
        res.sendRedirect(req.getContextPath() + "/login.jsp");
        return;
       }
      }
    2.就是lz把登录页面专门放到一个文件下,在配置过滤器的时候,不过滤该文件夹即可。
      

  4.   

    我对楼上的方法没理解透 这样在web.xml里面配置拦截器不是只有执行Action的时候才能执行拦截器吗?如果用户不提交验证信息,直接访问*.jsp 这个时候怎么办? 
      

  5.   

    过滤器里面可以通过request对象获得访问的路径,你可以判断该路径是否不需要过滤,不需要过滤的话直接往下运行就可以了。
      

  6.   

    在filter里面取得请求地址,判断是否过滤,如果是登陆页面,直接转发
      

  7.   

    我先试试
    LG我也碰到类似的问题 我开始用session去验证用户非法登录 页面没有报错 只是在action里报空指针异常 
    现在都没有找到合适的方法 等待高手的正解.....
      

  8.   

    我认为用session来做非法用户登录最好不过,lz你你试试。
      

  9.   

    判断条件是  session中的用户不为空。而且请求的页面不是登录页面。而且请求的servlet不是登录的那个servlet.
      

  10.   

    我写了filter 但是直接访问登陆后的地址还是可以访问到:filter如下:public class LoginFilter implements Filter { public void destroy() {
    } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest)request;
    String requestURL = ((HttpServletRequest)request).getRequestURI();
    Employ employ = WebUtil.getEmploy(req);//得到登陆的用户
    if(employ == null && !requestURL.equals("/employ/login.do")){
    HttpServletResponse res = (HttpServletResponse) response;
    res.sendRedirect(req.getContextPath()+ "/employ/login.do");
    return;
    }
    chain.doFilter(request, response);
    } public void init(FilterConfig filterConfig) throws ServletException {

    }}