在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;
    }

 

posted @ 2016-07-28 15:40  云中飞鱼  阅读(554)  评论(0编辑  收藏  举报