zoukankan      html  css  js  c++  java
  • 用Filter作用户授权的例子

    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(","); 
    
            } 
    
        } 
    
    } 

    参考地址:http://www.jb51.net/article/38730.htm

  • 相关阅读:
    [原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则
    CV界的明星人物们
    Yoshua Bengio 2016年5月11日在Twitter Boston的演讲PPT
    什么是协变量
    英文写作中的最常见“十大句式”
    英文论文中i.e.,e.g.,etc.,viz.的简要小结
    Tips for writing a paper
    ifram 取父窗体的URL地址
    QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据
    Adapter数据变化改变现有View的实现原理及案例
  • 原文地址:https://www.cnblogs.com/yyxxn/p/8650204.html
Copyright © 2011-2022 走看看