配置登录过滤器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置登录过滤器相关的知识,希望对你有一定的参考价值。

用途:进入页面时判断用户是否登录,如果没有登录返回某个页面(如登录界面)。

代码:web.xml

<filter>

  <filter-name>onlineFilter</filter-name>

  <filter-class>com.***.***.OnlineFilter</filter-class>   <!--  项目中的类,***改为自己项目的包命  -->

</filter>

<filter-mapping>

  <filter-name>onlineFilter</filter-name>

  <url-pattern>*.html</url-pattern>           <!--  过滤那些请求(后缀为html的)  -->

</filter-mapping>

<filter-mapping>

  <filter-name>onlineFilter</filter-name>

  <url-pattern>*.jsp</url-pattern>            <!--  过滤那些请求(后缀为jspl的)  -->

</filter-mapping>

 

  OnlineFilter.java

package com.cyimayi.filter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class OnlineFilter extends HttpServlet implements javax.servlet.Filter {    //实现javax.servlet.Filter接口

    private static final long serialVersionUID = 1L;

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        HttpSession session = req.getSession();
        String[] arr = {"/login.html", "/main.jsp", "/alipay/alipayapi.jsp", "/alipay/notify_url.jsp", "/alipay/return_url.jsp"};  

    //放行的页面,项目名开始(如www.abc.com/abc/aa.jsp, abc为项目名的话就填/aa.jsp
        List<String> temp = Arrays.asList(arr);    //将数据转成list
        if(!temp.contains(req.getServletPath())) {     // 对页面进行放行
            if (session.getAttribute("admin") == null) { //判断用户是否登录,此处可为自己的其他条件。
                res.sendRedirect("../login.html");      //重定向
                return;
            }
        }

   /*

    * chain.doFilter(request, response);

    * 他的作用是将请求转发给过滤器链上下一个对象。这里的下一个指的是下一个filter,如果没有filter那就是你请求的资源。

    * 一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起

    */
        chain.doFilter(request, response);
    }

    public void init(FilterConfig filterConfig) {
        //System.out.println("OnlineFilter initialized.");
    }

    public void destroy() {
        //System.out.println("OnlineFilter destroied");
    }
}

 

以上是关于配置登录过滤器的主要内容,如果未能解决你的问题,请参考以下文章

cas有些请求路径不需要单点登录过滤器拦截

shiro过滤器过滤属性含义

shiro过滤器过滤属性含义

配置了CAS过滤器之后Struts2的过滤器失效了

struts2配置过滤器与拦截器

用servlet和过滤器实现简单的权限管理和敏感词过滤功能