中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Filter實現登錄權限驗證

發布時間:2020-08-21 06:23:45 來源:腳本之家 閱讀:115 作者:Skywalker_zyk 欄目:編程語言

本文實例為大家分享了用Filter實現登錄權限驗證的具體代碼,供大家參考,具體內容如下

用戶在訪問任何界面時,會查詢用戶是否登錄過,如果登錄過則可以直接訪問,沒有登錄的話跳到登錄界面

web.xml配置過濾器

<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.zyk.ctrl.MyFilter</filter-class>
 <!-- 配置初始化參數,指明再沒有登錄的情況下放行的資源 -->
 <init-param>
 //初始化參數名
  <param-name>letgo</param-name>
  //初始化參數值
  <param-value>/login.jsp;/loginServlet;/css;/images;/js</param-value>
 </init-param>
 </filter>
 <filter-mapping>
 //必須和上面的一樣
 <filter-name>myFilter</filter-name>
 //過濾所有
 <url-pattern>/*</url-pattern>
 
</filter-mapping>

MyFilter.java

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

/**
 * Servlet Filter implementation class MyFilter
 */

public class MyFilter implements Filter {
//定義一個存放放行資源路徑的數組
 private static String[] paths;

 /**
 * Default constructor.
 */
 public MyFilter() {
 // TODO Auto-generated constructor stub
 }

 /**
 * @see Filter#destroy()
 */
 public void destroy() {
 // TODO Auto-generated method stub
 }

 /**
 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
 */
 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
  throws IOException, ServletException {
 HttpServletRequest request = (HttpServletRequest) req;
 HttpServletResponse response = (HttpServletResponse) res;
  //獲取資源URI路徑
  String path = request.getServletPath();
  
  for (int i = 0; i < paths.length; i++) {
  //如果當前請求的URI路徑是要放行的資源中的一個,放行
  if (path.startsWith(paths[i])) {
   chain.doFilter(request, response);
   return;//放行之后返回,避免程序繼續執行,往下面執行是攔截的代碼
  }
  
  }
  //判斷用戶是否已經登錄,如果登錄則放行資源,否則重定向到登錄界面
  String name = (String) request.getSession().getAttribute("name");
  //如果name為空,則證明用戶沒有登錄過,跳轉到登錄界面
  if (name==null) {
  request.getSession().setAttribute("error", "尚未登錄,請登錄");
  response.sendRedirect("/BookManagerSystem/login.jsp");
  return;
  
  }
  //剩下的情況為已登錄,放行
  chain.doFilter(request, response); 
 

 }

 /**
 * @see Filter#init(FilterConfig)
 */
 public void init(FilterConfig fConfig) throws ServletException {
 //讀取初始化參數,得到放行的資源
 String initParameter = fConfig.getInitParameter("letgo");
 paths =initParameter.split(";");
 }

}

Servlet.java部分代碼

if ("login".equals(action)) {
  String name = request.getParameter("name");
  String pwd = request.getParameter("pwd");
  User user = new User(name, pwd);

  if (dao.ValidateLogin(user)) {
  //ValidateLogin為登錄驗證方法,如果驗證成功,則設置一個屬性名為“name”值為用戶名的session,用于Myfilter驗證是否登錄過
  request.getSession().setAttribute("name", name);
  response.sendRedirect("admin/admin.jsp");

  } else {
  request.getSession().setAttribute("error", "賬號或者密碼錯誤");
  response.sendRedirect("login.jsp");
  }

 }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安丘市| 福鼎市| 乌恰县| 山阳县| 缙云县| 永嘉县| 获嘉县| 福鼎市| 江油市| 资溪县| 扬州市| 镶黄旗| 彰武县| 板桥市| 越西县| 和田县| 屯昌县| 聊城市| 会宁县| 隆德县| 湘潭市| 准格尔旗| 舟曲县| 莱芜市| 桃园县| 建阳市| 离岛区| 丰镇市| 湖州市| 荥经县| 临漳县| 康平县| 于都县| 柳州市| 雷山县| 河北省| 丰原市| 吐鲁番市| 竹北市| 铜川市| 大埔县|