整合營銷服務商

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

          免費咨詢熱線:

          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() { } }


          主站蜘蛛池模板: 国产一区二区三区内射高清| 欧美激情国产精品视频一区二区 | 日本一区免费电影| 3d动漫精品啪啪一区二区中文| 亚洲日韩精品一区二区三区无码| 无码人妻精品一区二区三18禁 | 国产精品久久久久久一区二区三区| 亚洲精品精华液一区二区| 手机福利视频一区二区| 精品久久久久中文字幕一区| 免费看一区二区三区四区| 亚洲V无码一区二区三区四区观看| 精品欧洲av无码一区二区14| 国产成人免费一区二区三区| 91一区二区三区| 亚洲一区二区三区丝袜| 动漫精品专区一区二区三区不卡| 高清一区二区三区日本久| 久久精品国内一区二区三区| 中文字幕一区二区在线播放| 日本视频一区在线观看免费| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 亚洲午夜福利AV一区二区无码| 国产免费一区二区三区| 一区二区国产精品| 无码av免费毛片一区二区| 中文乱码精品一区二区三区| 亚洲熟女综合一区二区三区| 上原亚衣一区二区在线观看| 国产精品日韩欧美一区二区三区| 91国在线啪精品一区| 男人的天堂av亚洲一区2区| 亚洲中文字幕无码一区| 国产成人一区二区在线不卡| 中文字幕日韩一区二区三区不卡| 国产成人久久精品麻豆一区| 亚洲国产欧美日韩精品一区二区三区| 国产精品一区二区三区99| 日韩高清一区二区| 国产精品一区视频| 中文字幕在线一区二区在线|