最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中使用Filter控制用戶登錄權限具體實例

 更新時間:2013年06月19日 11:13:00   作者:  
java中使用Filter控制用戶登錄權限具體實例,需要的朋友可以參考一下

學jsp這么長時間,做的項目也有七八個了,可所有的項目都是用戶登錄就直接跳轉(zhuǎn)到其擁有權限的頁面,或者顯示可訪問頁面的鏈接。使用這種方式來幼稚地控制訪問權限。從來沒有想過如果我沒有登錄,直接輸入地址也可以直接訪問用戶的頁面的。

在jsp中權限的控制是通過Filter過濾器來實現(xiàn)的,所有的開發(fā)框架中都集成有Filter,如果不適用開發(fā)框架則有如下實現(xiàn)方法:

LoginFilter.java

復制代碼 代碼如下:

public class LoginFilter implements Filter { 

    private String permitUrls[] = null; 

    private String gotoUrl = null; 

    public void destroy() { 

        // TODO Auto-generated method stub 

        permitUrls = null; 

        gotoUrl = null; 

    } 

    public void doFilter(ServletRequest request, ServletResponse response, 

            FilterChain chain) throws IOException, ServletException { 

        // TODO Auto-generated method stub 

        HttpServletRequest res=(HttpServletRequest) request; 

        HttpServletResponse resp=(HttpServletResponse)response; 

        if(!isPermitUrl(request)){ 

            if(filterCurrUrl(request)){ 

                System.out.println("--->請登錄"); 

                resp.sendRedirect(res.getContextPath()+gotoUrl); 

                return; 

            } 

        } 

        System.out.println("--->允許訪問"); 

        chain.doFilter(request, response); 

    } 

    public boolean filterCurrUrl(ServletRequest request){ 

        boolean filter=false; 

        HttpServletRequest res=(HttpServletRequest) request; 

        User user =(User) res.getSession().getAttribute("user"); 

        if(null==user) 

            filter=true; 

        return filter; 

    }       

    public boolean isPermitUrl(ServletRequest request) { 

        boolean isPermit = false; 

        String currentUrl = currentUrl(request); 

        if (permitUrls != null && permitUrls.length > 0) { 

            for (int i = 0; i < permitUrls.length; i++) { 

                if (permitUrls[i].equals(currentUrl)) { 

                    isPermit = true; 

                    break; 

                } 

            } 

        } 

        return isPermit; 

    }        

    //請求地址 

    public String currentUrl(ServletRequest request) {   

        HttpServletRequest res = (HttpServletRequest) request; 

        String task = request.getParameter("task"); 

        String path = res.getContextPath(); 

        String uri = res.getRequestURI(); 

        if (task != null) {// uri格式 xx/ser 

            uri = uri.substring(path.length(), uri.length()) + "?" + "task="

                    + task; 

        } else { 

            uri = uri.substring(path.length(), uri.length()); 

        } 

        System.out.println("當前請求地址:" + uri); 

        return uri; 

    } 

    public void init(FilterConfig filterConfig) throws ServletException { 

        // TODO Auto-generated method stub 

        String permitUrls = filterConfig.getInitParameter("permitUrls"); 

        String gotoUrl = filterConfig.getInitParameter("gotoUrl"); 

  

        this.gotoUrl = gotoUrl; 

  

        if (permitUrls != null && permitUrls.length() > 0) { 

            this.permitUrls = permitUrls.split(","); 

        } 

    } 

}


Web.xml

復制代碼 代碼如下:

<filter> 

    <filter-name>loginFilter</filter-name> 

    <filter-class>filter.LoginFilter</filter-class> 

  

    <init-param> 

        <param-name>ignore</param-name> 

        <param-value>false</param-value> 

    </init-param> 

    <init-param> 

        <param-name>permitUrls</param-name> 

        <param-value>/,/servlet/Loginservlet?task=login,/public.jsp,/login.jsp</param-value> 

    </init-param> 

    <init-param> 

        <param-name>gotoUrl</param-name> 

        <param-value>/login.jsp</param-value> 

    </init-param> 

</filter> 

<filter-mapping> 

    <filter-name>loginFilter</filter-name> 

    <url-pattern>/*</url-pattern> 

</filter-mapping>

這短代碼主要實現(xiàn)了用戶登錄的過濾,權限過濾原理相同。只需要把判斷用戶是否登錄換成是否有權限就可以了!

相關文章

  • Spring @Primary和@Qualifier注解原理解析

    Spring @Primary和@Qualifier注解原理解析

    這篇文章主要介紹了Spring @Primary和@Qualifier注解原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java BigDecimal使用及基本運算(推薦)

    Java BigDecimal使用及基本運算(推薦)

    Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數(shù)進行精確的運算。這篇文章主要介紹了Java BigDecimal使用指南針(推薦),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • springboot實現(xiàn)攔截器之驗證登錄示例

    springboot實現(xiàn)攔截器之驗證登錄示例

    本篇文章主要介紹了springboot實現(xiàn)攔截器之驗證登錄示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • springboot如何通過URL方式訪問外部資源

    springboot如何通過URL方式訪問外部資源

    這篇文章主要介紹了springboot如何通過URL方式訪問外部資源,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java基礎之邏輯運算符知識總結

    Java基礎之邏輯運算符知識總結

    今天帶大家學習Java基礎知識,文中對Java邏輯運算符進行了非常詳細的介紹,有相關代碼示例,對正在學習java的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • Springboot整合Java?DL4J實現(xiàn)交通標志識別系統(tǒng)全過程

    Springboot整合Java?DL4J實現(xiàn)交通標志識別系統(tǒng)全過程

    在自動駕駛系統(tǒng)中,交通標志識別是實現(xiàn)車輛智能化的關鍵技術之一,本文介紹了利用SpringBoot和JavaDeeplearning4j構建交通標志識別系統(tǒng)的方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • 前端存token后端獲取token代碼實例(Spring?Boot)

    前端存token后端獲取token代碼實例(Spring?Boot)

    Token其實就是訪問資源的憑證,一般是用戶通過用戶名和密碼登錄成功之后,服務器將登陸憑證做數(shù)字簽名,加密之后得到的字符串作為token,這篇文章主要給大家介紹了關于前端存token,Spring?Boot后端獲取token的相關資料,需要的朋友可以參考下
    2024-07-07
  • 踩坑批量更新sql報錯,實際sql能夠正常執(zhí)行的問題

    踩坑批量更新sql報錯,實際sql能夠正常執(zhí)行的問題

    在項目工程遷移過程中,遇到了一個批量更新接口在新工程中報錯的問題,通過分析,排除了代碼錯誤的可能,最終發(fā)現(xiàn)是由于數(shù)據(jù)庫連接配置不當導致的,在jdbc連接字符串中加入allowMultiQueries=true參數(shù)后,問題得以解決,這個參數(shù)的作用是允許SQL批量執(zhí)行
    2022-12-12
  • 詳解Java面向?qū)ο笾鄳B(tài)的原理與實現(xiàn)

    詳解Java面向?qū)ο笾鄳B(tài)的原理與實現(xiàn)

    多態(tài)是指不同的子類在繼承父類后分別都重寫覆蓋了父類的方法,即父類同一個方法,在繼承的子類中表現(xiàn)出不同的形式。本文將詳解多態(tài)的原理與實現(xiàn),感興趣的可以學習一下
    2022-05-05
  • idea集成shell運行環(huán)境以及shell輸出中文亂碼的解決

    idea集成shell運行環(huán)境以及shell輸出中文亂碼的解決

    這篇文章主要介紹了idea集成shell運行環(huán)境以及shell輸出中文亂碼的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論

平邑县| 武安市| 克东县| 雅安市| 泊头市| 拜泉县| 桦川县| 安吉县| 宁国市| 从化市| 铜鼓县| 南靖县| 忻城县| 蕲春县| 苍南县| 大城县| 宽甸| 富阳市| 黎城县| 乌鲁木齐县| 高台县| 盐山县| 丘北县| 岐山县| 福安市| 宕昌县| 贵阳市| 靖宇县| 绥化市| 太白县| 华安县| 略阳县| 泸西县| 鞍山市| 醴陵市| 金山区| 凤凰县| 丰原市| 长沙市| 苗栗县| 翁牛特旗|