登录验证过滤器

1.过滤器类

public class LoginFilter implements Filter {

 private String weblogin = "/login.jsp"; // web页面登陆页面

 //private final static String[] ispass = new String[] { "/ckeditor/", "/css/", "/images/", "/img/",
  //"/jmesaimages/", "/js/","/login.jsp","/login.jsp","/user_login","/struts-tags"}; // 路径中包含该数组中字符时通过;

 private String passUrl[] ;
 
 public void destroy() {

 }

 public void doFilter(ServletRequest req, ServletResponse res,
   FilterChain chain) throws IOException, ServletException {
  HttpServletRequest request = (HttpServletRequest) req;
  HttpServletResponse response = (HttpServletResponse) res;
  String flag = ifFilter(request);
  if("success".equals(flag)) {
   chain.doFilter(req, res); // 调用下一过滤器
  } else {
   response.sendRedirect(request.getContextPath()+flag);
      return;
  }
 }

 /**
  * 初始化
  */
 public void init(FilterConfig fc) throws ServletException {
  this.passUrl = fc.getInitParameter("passUrl").split(",");
 }
 
 /**
  * 过滤未登录访问的路径
  * @param req
  * @return
  */
 private String ifFilter(HttpServletRequest request) {
  String flag = "success";
  String url = request.getRequestURI();
  boolean ifpass = false;
  for(String str : passUrl) {
   if(url.contains(str.trim())) {
    ifpass = true;
    break;
   }
  }
  if(!ifpass) { //请求路径不包含通过字符数组中任一个字符
   HttpSession session = request.getSession();
   User userPO = null;
   userPO = (User)session.getAttribute("user");
   if(userPO == null || "".equals(userPO.getUserid())) {
     flag = "/index.jsp";
   }
  }
  return flag;
 }

}

2.在web.xml配置过滤器

<!-- 配置登录filter -->
 <filter>
  <filter-name>loginFilter</filter-name>
  <filter-class>com.test.security.LoginFilter</filter-class>
  <init-param>
   <param-name>passUrl</param-name>
   <param-value>/index.jsp,/css,/images,/img,/js,/user_login,/struts-tags
   </param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>loginFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java海洋

你的鼓励,是我写下去的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值