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