麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

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

2019-11-26 16:03:24
字體:
來源:轉載
供稿:網友

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

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

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>

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91久久国产露脸精品国产 | 久久精品首页 | 日韩视频一区 | 成人三级视频网站 | 国产午夜精品久久久久 | 国产午夜精品一区二区三区嫩草 | 斗罗破苍穹在线观看免费完整观看 | 99精品在线免费 | 亚洲精品一二三区 | 国产精品久久久久久久四虎电影 | 欧美久久一区二区 | 欧美 videos粗暴 | 嫩草www | 成人一级视频在线观看 | 国产一区日韩精品 | 精品国产欧美一区二区 | 一级做a爱片久久毛片a高清 | 在线观看免费视频麻豆 | 亚洲精品在线观看免费 | 一级外国毛片 | 成年人视频在线免费观看 | 伊人在线视频 | 久久久久免费电影 | 久久蜜臀一区二区三区av | h视频在线免费看 | 色婷婷久久久 | 国产美女视频一区 | 日本欧美在线播放 | 91 视频网站| 圆产精品久久久久久久久久久 | 天天干天天碰 | 欧美精品免费一区二区三区 | 夜夜夜影院 | 黄视频网站免费在线观看 | 天天夜夜草 | 爽爽淫人综合网网站 | 18欧美性xxxx极品hd | japanese massage tube | 日本在线视频一区二区三区 | 欧美另类69xxxxx 视频 | 久色免费视频 |