整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Java Filter過濾器------對未登錄用戶訪問地址的控制

          一、什么是Filter過濾器

          在這里插入圖片描述

          二、 為什么要用Filter過濾器

          場景: 防止用戶未登錄就隨意訪問了網站內部

          在實際場景中,我們在開發完成后,為了保證網站的安全性,只有登錄后才能訪問某些網站內部的頁面,如果不進行一層登錄的過濾,那么任何人都能通過URL來隨意的訪問到網站內部的頁面,這是不合理的。例如此刻的我網站內部一個頁面URL是

          http://localhost:8080/sis/public/page/main.html
          

          但是我想讓只有登錄過的人才能合法的訪問到這個頁面,此時使用Filter過濾器就能解決這個問題。實現邏輯是通過Session信息判斷是否登錄了,如果未登錄就重定向到登錄的首頁。

          其他:通過對JSP、Servlet、靜態圖片文件、或靜態HTML文件進行攔截,以實現URL級別的權限控制、過慮敏感詞匯、壓縮響應信息等一些高級功能。

          三、如何使用 1. 重寫過濾器的三個方法

          public class QuickFilter  implements Filter{
              @Override
              public void init(FilterConfig filterConfig) throws ServletException {
              }
              @Override
              public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                      throws IOException, ServletException {
                  System.out.println("qucikFilterRunning");
                  //放行請求
                  chain.doFilter(request, response);
              }
              @Override
              public void destroy() {
              }
          }
          

          java 過濾器實現登錄_登錄過濾器怎么寫_過濾器登錄狀態才能操作

          三個方法都是可以表現 Filter 生命周期的方法,其中 init() 方法在 Web 應用程序加載時會被調用,destroy() 方法在 Web 應用程序卸載(或關閉)時被調用,這兩個方法都只會被調用一次,而 () 方法會被調用多次(只要客戶端有請求時就會被調用),Filter 所有的工作集中在 () 方法中。

          2.使用案例

          防止未登錄用戶訪問到網站內部頁面,未登錄的情況下訪問,會進行一個重定向跳轉到登錄頁面。而請求后端非登錄接口,不允許訪問,一律設置為401

           @WebFilter("/*")//模糊匹配 所以的路徑都會過濾 
          public class LoginFilter implements Filter {
              @Override
              public void init(FilterConfig filterConfig) throws ServletException {
              }
              @Override
          /**  只要是匹配到了路徑,①都先執行doFilter ,②再去執行Servlet*/
              public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
                  HttpServletRequest req = (HttpServletRequest) servletRequest;
                  HttpServletResponse res = (HttpServletResponse) servletResponse;
                  String uri = req.getServletPath();
          // 校驗:①前端html攔截    ②非前端的就是后臺接口,除了登錄接口之外
                  HttpSession session = req.getSession(false);//沒有session時候 返回null
                  if (session == null) { //沒有登錄
                      //首頁重定向到登錄頁面
                      if (  "/public/page/main.html".equals(uri) ) {
                          res.setContentType("text/html;charset= UTF-8");
          //開始重定向
                          String schema = req.getScheme();//HTTP
                          String host = req.getServerName();//服務器ip
                          int port = req.getServerPort();//端口號
                          String ctx = req.getContextPath();//項目部署路徑 應用上下文 sis
                          // 錯誤寫法①res.sendRedirect("/public/page/main.html");②res.sendRedirect("public/page/main.html");
          

          過濾器登錄狀態才能操作_java 過濾器實現登錄_登錄過濾器怎么寫

          String basePath = schema+"://"+host+":"+port+ctx; res.sendRedirect(basePath+"/public/index.html");//正確寫法 return; //請求后端非登錄接口, 未登錄不允許訪間的請求,一般返回401狀態碼 }else if ( (!uri.startsWith("/public/") && !uri.startsWith("/static/") && !"/user/login".equals(uri))) { res.setContentType("application/json"); PrintWriter pw = res.getWriter(); Response r = new Response(); r.setCode("ERR401"); r.setMessage("不允許訪問"); res.setStatus(401);//設置響應的狀態碼 pw.println(JSONUtil.write(r)); //響應打到前端 pw.flush(); return; } } filterChain.doFilter( servletRequest,servletResponse); } @Override public void destroy() { } }


          主站蜘蛛池模板: 午夜无码视频一区二区三区| 在线播放偷拍一区精品| 尤物精品视频一区二区三区 | 精品无码一区二区三区爱欲 | 国产福利一区二区三区在线观看| 精品人妻一区二区三区四区在线 | 国产99久久精品一区二区| 中文国产成人精品久久一区| 日韩精品无码视频一区二区蜜桃| 亚洲国产专区一区| 精品一区二区三区在线播放 | 夜夜精品视频一区二区| 四虎在线观看一区二区 | 久久精品国产一区| 国产精品香蕉在线一区| 久久久国产精品无码一区二区三区 | 精品国产福利一区二区| 无码一区二区三区中文字幕| 一区二区中文字幕在线观看| 无码人妻精品一区二区三| 学生妹亚洲一区二区| 波多野结衣中文一区| 亚洲不卡av不卡一区二区| 在线观看视频一区二区| 男插女高潮一区二区| 免费高清av一区二区三区| 天堂成人一区二区三区| 国产乱码精品一区三上| 成人影片一区免费观看| 精品久久久久久无码中文字幕一区| 午夜视频一区二区| 国产午夜精品一区二区三区| 国产自产在线视频一区| 亚洲一区二区观看播放| 能在线观看的一区二区三区| 国产一区二区精品久久凹凸| 久久精品无码一区二区WWW| 国产亚洲综合一区二区三区| 在线播放国产一区二区三区| 国产精品一区二区三区久久| 国产自产V一区二区三区C|