|
|
@@ -3,6 +3,7 @@ package com.uas.platform.b2b.support;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.Iterator;
|
|
|
import java.util.List;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
@@ -13,6 +14,7 @@ import org.springframework.security.access.ConfigAttribute;
|
|
|
import org.springframework.security.access.SecurityConfig;
|
|
|
import org.springframework.security.web.FilterInvocation;
|
|
|
import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
|
|
|
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
|
|
|
|
|
import com.uas.platform.b2b.dao.ResourceDao;
|
|
|
import com.uas.platform.b2b.model.Resource;
|
|
|
@@ -69,11 +71,20 @@ public class CustomSecurityMetadataSource implements FilterInvocationSecurityMet
|
|
|
if (resourceMap == null)
|
|
|
loadResourceDefine();
|
|
|
HttpServletRequest request = ((FilterInvocation) object).getRequest();
|
|
|
- String requestUrl = getRequestPath(request);
|
|
|
- return resourceMap.get(request.getMethod() + ":" + requestUrl);
|
|
|
+ for (Iterator<String> iter = resourceMap.keySet().iterator(); iter.hasNext();) {
|
|
|
+ String resourceKey = iter.next();
|
|
|
+ String[] resourceParam = resourceKey.split(":");
|
|
|
+ String resourceMethod = resourceParam[0];
|
|
|
+ String resourceUrl = resourceParam[1];
|
|
|
+ AntPathRequestMatcher matcher = new AntPathRequestMatcher(resourceUrl);
|
|
|
+ if (null != resourceUrl && request.getMethod().equals(resourceMethod) && matcher.matches(request)) {
|
|
|
+ return resourceMap.get(resourceKey);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
- private String getRequestPath(HttpServletRequest request) {
|
|
|
+ public String getRequestPath(HttpServletRequest request) {
|
|
|
String url = request.getServletPath();
|
|
|
if (request.getPathInfo() != null)
|
|
|
url = url + request.getPathInfo();
|