Java丨簡單的登錄過濾器實現方法


過濾過濾,實際就是把需要和不需要的東西分開!

今天來說道說道我們程序中的‘登錄過濾器’ ,首先我們看看一下面的問題:

1、登錄過濾器”是干什么用的?

1)登錄過濾器就是為了防止在用戶沒有登錄的情況下來訪問我們的網站。

2)舉例:main.html 這個網頁是需要通過login.html這個網頁登錄后才可以訪問的,現在有一個用戶沒有登錄,直接訪問main.html成功了。那么,這樣的網站是不是覺得不安全呢?用戶不用登錄隨隨便便就訪問了。so,we have to need a filter.我們需要用過濾器來過濾一些需要登錄后才可以訪問的頁面.

 

2、我們要怎么過濾呢?

1)at first ! 我們肯定要過濾掉需要登錄的頁面

2)我們拿到了需要登錄的頁面后,我們怎么判斷用戶有沒有登錄呢?so,we need a session .

3)已session為依據,來判斷用戶是不是登錄過了。登錄過了我們就讓他繼續訪問,沒有登錄的我們就讓他返回到登錄界面。

下面我們來看看代碼是如何實現的:

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>

注意:登錄頁面不能過濾。。。自行調試不要偷懶!這樣記憶深刻......

 

博文到此結束,感謝您的觀看,希望對各位讀者有所幫助,如果有什么意見以及建議請在評論留言......

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM