zoukankan      html  css  js  c++  java
  • 在JaveWeb项目中配置Spring 匿名访问时,匹配规则的变相实现/*

    实现/*

        /**
         * 根据当前的URL返回该url的角色集合。
         * 1.如果当前的URL在匿名访问的URL集合当中时,在当前的角色中添加匿名访问的角色(SysRole.ROLE_CONFIG_ANONYMOUS)。
         * 2.如果当前系统不存在的情况,给当前用户添加一个公共访问的角色(SysRole.ROLE_CONFIG_PUBLIC)。 3.url
         * 和角色映射,url和参数映射,给当前用户添加一个公共的角色(SysRole.ROLE_CONFIG_PUBLIC)。
         *
         * @param object the object
         * @return the attributes
         */
        public Collection<ConfigAttribute> getAttributes(Object object) {
            LOGGER.info("Enter");
            Collection<ConfigAttribute> configAttribute = new HashSet<ConfigAttribute>();
            FilterInvocation filterInvocation = (FilterInvocation) object;
            HttpServletRequest request = filterInvocation.getRequest();
            String url = request.getRequestURI();
            LOGGER.info("FullUrl="+filterInvocation.getFullRequestUrl());
            LOGGER.info("URL="+filterInvocation.getRequestUrl());
            LOGGER.info("URI="+request.getRequestURI());
            LOGGER.info("CTX="+filterInvocation.getHttpRequest().getContextPath());
            String urlNoCtx = removeCtx(url, request.getContextPath());
            // 匿名访问的URL
            if (anonymousUrls.contains(urlNoCtx)) {
                configAttribute.add(RoleConstant.ROLE_ANONYMOUS);
                return configAttribute;
            }else{
                //2016年7月28日15:18:27 匿名访问的匹配规则的实现
                for(String anonymouseUrl : anonymousUrls){
                    if(anonymouseUrl.indexOf("*") > -1){
                        anonymouseUrl = anonymouseUrl.replace("*",".*");
                        if(urlNoCtx.matches(anonymouseUrl)){
                            configAttribute.add(RoleConstant.ROLE_ANONYMOUS);
                            return configAttribute;
                        }
                    }
                }
                if(urlNoCtx.contains("lms")){
                    configAttribute.add(RoleConstant.ROLE_LMS_ANONYMOUS);
                }else{
                    configAttribute.add(RoleConstant.ROLE_PUBLIC);
                }
            }
            return configAttribute;
        }
  • 相关阅读:
    磁盘512n,512e,4k原生磁盘的区别和操作系统支持
    TLB与内存寻址,内存读取,虚拟内存的相关原理
    文件系统逻辑块与磁盘物理扇区的关系
    DBA的工作职责和每日工作
    理解数据库中的undo日志、redo日志、检查点
    React Native 常用插件案例
    React Native 学习资料
    React Native开源项目案例
    nginx rewrite 指令
    nginx反向代理配置
  • 原文地址:https://www.cnblogs.com/kzfy/p/5715032.html
Copyright © 2011-2022 走看看