123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package org.jeecg.common.util;
- import java.util.Collection;
- import java.util.Map;
- import org.springframework.util.AntPathMatcher;
- /**
- * 使用Spring自身提供的地址匹配工具匹配URL
- */
- public class PathMatcherUtil {
- public static void main(String[] args) {
- String url = "/sys/dict/loadDictOrderByValue/tree,s2,2";
- String p = "/sys/dict/loadDictOrderByValue/*";
- System.out.println(PathMatcherUtil.match(p,url));
- }
- /**
- * 实际验证路径匹配权限
- *
- * @param matchPath 权限url
- * @param path 访问路径
- * @return 是否拥有权限
- */
- public static boolean match(String matchPath, String path) {
- SpringAntMatcher springAntMatcher = new SpringAntMatcher(matchPath, true);
- return springAntMatcher.matches(path);
- }
- /**
- * 实际验证路径匹配权限
- *
- * @param list 权限url
- * @param path 访问路径
- * @return 是否拥有权限
- */
- public static boolean matches(Collection<String> list, String path) {
- for (String s : list) {
- SpringAntMatcher springAntMatcher = new SpringAntMatcher(s, true);
- if (springAntMatcher.matches(path)) {
- return true;
- }
- }
- return false;
- }
- /**
- * 地址表达式匹配工具
- */
- private static class SpringAntMatcher implements Matcher {
- private final AntPathMatcher antMatcher;
- private final String pattern;
- private SpringAntMatcher(String pattern, boolean caseSensitive) {
- this.pattern = pattern;
- this.antMatcher = createMatcher(caseSensitive);
- }
- @Override
- public boolean matches(String path) {
- return this.antMatcher.match(this.pattern, path);
- }
- @Override
- public Map<String, String> extractUriTemplateVariables(String path) {
- return this.antMatcher.extractUriTemplateVariables(this.pattern, path);
- }
- private static AntPathMatcher createMatcher(boolean caseSensitive) {
- AntPathMatcher matcher = new AntPathMatcher();
- matcher.setTrimTokens(false);
- matcher.setCaseSensitive(caseSensitive);
- return matcher;
- }
- }
- private interface Matcher {
- boolean matches(String var1);
- Map<String, String> extractUriTemplateVariables(String var1);
- }
- }
|