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

  • 相关阅读:
    pip安装报错 解决办法
    django admin 支持时间更改
    fiddler抓包工具
    session token两种登陆方式
    面向对象内置方法
    linux 命令
    flask
    celery
    mac添加redis 环境变量
    Django请求流程图
  • 原文地址:https://www.cnblogs.com/yyxxn/p/8650204.html
Copyright © 2011-2022 走看看