需求:权限判断时,需要判断用户请求的地址是否允许访问。
分析:抽象为,一个url是否符合既定url。
具体实现:
/**
* 对比两个url,compare是否符合marget(,即marget有的参数,compare都有并且相等)
*/
static boolean compareURL(String marget,String compare){
if(StringUtils.isBlank(marget))return true;//不需要对比
if(StringUtils.isBlank(compare))return false;
Map<String,String> margetMap = getMapFromPath(marget);
Map<String,String> compareMap = getMapFromPath(compare);
for(Object paramKey : margetMap.keySet()){
if(!compareMap.containsKey(paramKey))return false;
if(!margetMap.get(paramKey).equals(compareMap.get(paramKey)))return false;
}
return true;
}
/**
* 参数字符串转换为map
*/
static Map<String,String> getMapFromPath(String path){
Map<String,String> map = new HashMap<String,String>();
if(StringUtils.isBlank(path))return map;
String[] strs = path.split("&");
String[] mapStr;
for(String str: strs){
mapStr = str.split("=");
map.put(mapStr[0], mapStr[1]);
}
return map;
}
以上