Java丨简单的登陆过滤器实现方法

过滤过滤,实际就是把须要和不须要的东西分开!html

今天来讲道说道咱们程序中的‘登陆过滤器’ ,首先咱们看看一下面的问题:java

一、登陆过滤器”是干什么用的?web

1)登陆过滤器就是为了防止在用户没有登陆的状况下来访问咱们的网站。安全

2)举例:main.html 这个网页是须要经过login.html这个网页登陆后才能够访问的,如今有一个用户没有登陆,直接访问main.html成功了。那么,这样的网站是否是以为不安全呢?用户不用登陆随随便便就访问了。so,we have to need a filter.咱们须要用过滤器来过滤一些须要登陆后才能够访问的页面.session

 

二、咱们要怎么过滤呢?app

1)at first ! 咱们确定要过滤掉须要登陆的页面jsp

2)咱们拿到了须要登陆的页面后,咱们怎么判断用户有没有登陆呢?so,we need a session .网站

3)已session为依据,来判断用户是否是登陆过了。登陆过了咱们就让他继续访问,没有登陆的咱们就让他返回到登陆界面。url

下面咱们来看看代码是如何实现的:spa

package com.haojieli.filter;

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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginFilter implements Filter{

    public void destroy() {
        // TODO Auto-generated method stub
    }

    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException {
        // TODO Auto-generated method stub
        HttpServletRequest req = (HttpServletRequest)arg0;
        HttpServletResponse resp =(HttpServletResponse) arg1;
        HttpSession session = req.getSession();
           // 得到用户请求的URI
        String path = req.getRequestURI();
        // 从session取得已经登陆验证的凭证 我这里的demo用的是password来做为登陆凭证
        String password = (String) session.getAttribute("password");
        // login.jsp页面无需过滤(根据本身项目的要求来)

   //也能够path.contains("login.jsp")  反正怎么精确怎么来就很少说了
        if(path.indexOf("/login.jsp") > -1) {//注意:登陆页面千万不能过滤  否则过滤器就。。。。。自行调试不要偷懒!这样记忆深入
            arg2.doFilter(req, resp);
            return;
        } else {//若是不是login.jsp进行过滤
              if (password == null || "".equals(password)) {
                  // 跳转到登录页面
                  resp.sendRedirect("login.jsp");
            } else {
                // 已经登录,继续这次请求
                arg2.doFilter(req, resp);
            }
        }
    }
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
}

在这里就不用解释代码了,代码中有详细的注释,可是重要的一点 咱们过滤器是写好了 ,还须要配置啊,否则怎么运行呢?followe me。

将过滤器配置到web.xml里面 

 <filter>
      <filter-name>Login</filter-name>
      <filter-class>com.haojieli.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>adminLogin</filter-name>

<!--这里的/admin/* 表示是指定路径下的文件须要过滤   也能够写为 <url-pattern>/*</url-pattern> 表示全部文件都须要过滤-->
      <url-pattern>/admin/*</url-pattern>
  </filter-mapping>

注意:登陆页面不能过滤。。。自行调试不要偷懒!这样记忆深入......

 

博文到此结束,感谢您的观看,但愿对各位读者有所帮助,若是有什么意见以及建议请在评论留言......

======祝各位读者生活愉快======

相关文章
相关标签/搜索