| ... | ... | @@ -28,26 +28,41 @@ public class MyInvocationSecurityMetadataSourceService implements FilterInvocati | 
|  |  | /** | 
|  |  | * 加载权限表中所有权限 | 
|  |  | */ | 
|  |  | public void loadResourceDefine(){ | 
|  |  | public void loadResourceDefine(String requestUrl){ | 
|  |  | map = new HashMap<>(); | 
|  |  | Collection<ConfigAttribute> array; | 
|  |  | ConfigAttribute cfg; | 
|  |  | List<PERMISSION> permissions = permissionMapper.findAll(); | 
|  |  | for(PERMISSION permission : permissions) { | 
|  |  | array = new ArrayList<>(); | 
|  |  | cfg = new SecurityConfig(permission.getPermissionName()); | 
|  |  | //此处只添加了用户的名字,其实还可以添加更多权限的信息,例如请求方法到ConfigAttribute的集合中去。此处添加的信息将会作为MyAccessDecisionManager类的decide的第三个参数。 | 
|  |  | array.add(cfg); | 
|  |  |  | 
|  |  | //此处只添加了用户的名字,其实还可以添加更多权限的信息, | 
|  |  | // 例如请求方法到ConfigAttribute的集合中去。 | 
|  |  | // 此处添加的信息将会作为MyAccessDecisionManager类的decide的第三个参数。 | 
|  |  |  | 
|  |  | //CFG存储访问的URL需要的权限"ROLE_??"LIST | 
|  |  | List<String> urlOfRoles = permissionMapper.findRoleListByUrl(requestUrl); | 
|  |  |  | 
|  |  | for (String roleName:urlOfRoles) { | 
|  |  | cfg = new SecurityConfig(roleName); | 
|  |  | array.add(cfg); | 
|  |  | } | 
|  |  | //用权限的getUrl() 作为map的key,用ConfigAttribute的集合作为 value, | 
|  |  | map.put(permission.getPermissionSign(), array); | 
|  |  | map.put(permission.getUrl(), array); | 
|  |  | } | 
|  |  |  | 
|  |  | } | 
|  |  |  | 
|  |  | //此方法是为了判定用户请求的url 是否在权限表中,如果在权限表中,则返回给 decide 方法,用来判定用户是否有此权限。如果不在权限表中则放行。 | 
|  |  | /** | 
|  |  | * 此方法是为了判定用户请求的url 是否在权限表中, | 
|  |  | * 如果在权限表中,则返回给 decide 方法, | 
|  |  | * 用来判定用户是否有此权限。如果不在权限表中则放行。 | 
|  |  | */ | 
|  |  | @Override | 
|  |  | public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException { | 
|  |  | if(map ==null) {loadResourceDefine();} | 
|  |  | //清楚地址 | 
|  |  | String requestUrl = ((FilterInvocation)object).getRequestUrl(); | 
|  |  | if(map ==null) {loadResourceDefine(requestUrl);} | 
|  |  | //object 中包含用户请求的request 信息 | 
|  |  | HttpServletRequest request = ((FilterInvocation) object).getHttpRequest(); | 
|  |  | AntPathRequestMatcher matcher; | 
... | ... |  |