1. 程式人生 > >許可權控制-禁止普通登入使用者通過直輸URL方式訪問系統中其它自己不具備許可權的模組

許可權控制-禁止普通登入使用者通過直輸URL方式訪問系統中其它自己不具備許可權的模組

1.描述

一個普通使用者,只有單點登入的許可權,通過一些工具獲取到系統的其它模組的URL ,在位址列直接輸入,訪問,我們在一些按鈕做了一些控制,但是部分不具有操作機會的頁面還是會展現出來,不影響功能,但是也需要做優化處理

2.程式碼(JAVA)

@WebFilter(urlPatterns = { "/*" })//(採用註解方式配置filter) public class MainFilter implements Filter{

    @Override     public void destroy() {     }

    @Override     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)             throws IOException, ServletException {         this.do_filter_inner(request, response, chain);              }

    private void go_timeout_proc(ServletResponse response) throws IOException{         HttpServletResponse res = (HttpServletResponse) response;         res.sendRedirect("超時跳轉頁面");     }

    private void do_filter_inner(ServletRequest request,             ServletResponse response, FilterChain chain) throws IOException,             ServletException {         // 編碼處理,         this.do_encode(request, response);//              //手動輸入的不合規範的URL路徑,沒有許可權,在此限制         if(!this.do_pass_right(request, response)){             this.go_righterr_proc(response);//跳轉到提示頁             return;         }              //其他的filter處理

        //超時處理         this.go_timeout_proc(response);          }

    private boolean do_pass_right(ServletRequest request, ServletResponse response) throws IOException{         HttpServletRequest httpRequest = (HttpServletRequest) request;                  String conString = "";         //獲取父url         conString = httpRequest.getHeader("REFERER");                  if("".equals(conString) || null==conString){             //當前請求url             String servletPath = httpRequest.getServletPath();             //index頁,(本工程是部署到Tomact下,並在ROOT目錄下配置index檔案可通過ip直接訪問,所以需放行index頁,超時頁也要放行)             if(servletPath.contains("index.jsp") || servletPath.contains("login.jsp")|| servletPath.contains("timeout.jsp")){                 //沒有父url的但是可放行的url路徑,此處放行的如有必要可自行在                 //"index.jsp"放行,                 return true; //返回true為允許通過             }else {                 //沒有獲取到父 url ,判斷為非法訪問,無系統許可權,返回fasle,,做錯誤許可權攔截                 Debug.info("父URL:["+conString+"]為null,不是系統內部訪問,無許可權");                 return false;             }         }                  return true;//返回true,,只要是有父url的,都不做處理,繼續前行,後續處理              }     private void go_righterr_proc(ServletResponse response) throws IOException{         HttpServletResponse res = (HttpServletResponse) response;         res.sendRedirect("/**/right_error.jsp");//跳轉到許可權錯誤提示頁     }

    @Override     public void init(FilterConfig arg0) throws ServletException {                       }

3.可參考原文連結