修复没有对resource的方法做匹配

master
GPU is all you need 4 years ago
parent 10a71578d6
commit e155d29b41
  1. 15
      awardBE/src/main/java/edu/ncst/award/config/DataBaseUrlVoter.java

@ -1,5 +1,6 @@
package edu.ncst.award.config.security; package edu.ncst.award.config;
import edu.ncst.award.model.system.Resource;
import edu.ncst.award.model.system.Role; import edu.ncst.award.model.system.Role;
import edu.ncst.award.service.IResourceService; import edu.ncst.award.service.IResourceService;
import edu.ncst.award.utils.URLUtils; import edu.ncst.award.utils.URLUtils;
@ -78,18 +79,18 @@ public class DataBaseUrlVoter implements AccessDecisionVoter<FilterInvocation> {
return ACCESS_GRANTED; // 赞同票 return ACCESS_GRANTED; // 赞同票
} }
List<String> rolesResourceList = resourceService.getRolesResourceList(roleNames);//获取目标角色绑定的资源 List<Resource> rolesResourceList = resourceService.getUserScopeResourceList(roleNames);//获取目标角色绑定的资源
// Role Resource // Role Resource
if (rolesResourceList == null) { if (rolesResourceList == null || rolesResourceList.size() <=0) {
return ACCESS_DENIED; // 反对票 return ACCESS_DENIED; // 反对票
} }
for (String allowUrl : rolesResourceList) { // 当方法和url都匹配上才匹配成功
boolean match = antPathMatcher.match(allowUrl, urlWithoutQueryString); for (Resource resource : rolesResourceList) {
boolean match = antPathMatcher.match(resource.getUrl(), urlWithoutQueryString)
&& fi.getHttpRequest().getMethod().equals(resource.getMethod());
if (match) { if (match) {
return ACCESS_GRANTED; // 赞同票 return ACCESS_GRANTED; // 赞同票
} }
Loading…
Cancel
Save