首页>代码>SSM和Spring Security的整合后台权限基础框架>/mis/src/main/java/com/haoyu/security/MyInvocationSecurityMetadataSource.java
package com.haoyu.security; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.ConfigAttribute; import org.springframework.security.access.SecurityConfig; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.web.FilterInvocation; import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import com.haoyu.system.dao.UserMapper; import com.haoyu.system.domain.Role; import com.haoyu.system.domain.Webresdb; import com.haoyu.system.service.UserServiceImpl; public class MyInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource { private static Map<String, Collection<ConfigAttribute>> resourceMap = null; @Autowired private UserMapper userMapper; // 加载所有资源与角色的关系 public void loadResourceDefine() { resourceMap = null; resourceMap = new ConcurrentHashMap<String, Collection<ConfigAttribute>>(); List<Webresdb> metaDataSourceList = this.userMapper.findWebresdbList(); if(!metaDataSourceList.isEmpty()){ Collection<ConfigAttribute> configAttributes; ConfigAttribute configAttribute; List<Role> roleslist; String roles_; String[] roles; for(Webresdb metaDataSource : metaDataSourceList){ // 以权限名封装为Spring的security Object configAttributes = new ArrayList<ConfigAttribute>(); //roleslist = userMapper.findRoleList(); roles_ = metaDataSource.getRoles(); if(!"".equals(roles_)) { configAttributes.add(new SecurityConfig("ROLE_TEMP")); roles = roles_.split(","); for(String role : roles) { configAttribute = new SecurityConfig(role); configAttributes.add(configAttribute); } resourceMap.put(metaDataSource.getProtect(), configAttributes); }else { //处理没有对应角色的资源,防止没有角色对应的资源被所有用户访问 陈蹦 20140801 configAttributes.add(new SecurityConfig("ROLE_TEMP")); resourceMap.put(metaDataSource.getProtect(), configAttributes); } } } } public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException { if (resourceMap == null) { loadResourceDefine(); } HttpServletRequest request = ((FilterInvocation) object).getHttpRequest(); String requestUrl = ((FilterInvocation) object).getRequestUrl(); int index = requestUrl.lastIndexOf("/"); if(index > -1){ requestUrl = requestUrl.substring(index); Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(requestUrl); requestUrl = m.replaceAll(""); int inp = requestUrl.indexOf("?"); if(inp > -1){ requestUrl = requestUrl.substring(0, inp); } Collection<ConfigAttribute> configAttributes = resourceMap.get(requestUrl); System.out.println(configAttributes); if(configAttributes != null && !configAttributes.isEmpty()){ return configAttributes; } } // return SecurityConfig.createList("ROLE_TEMP"); return null; } public Collection<ConfigAttribute> getAllConfigAttributes() { return null; } public boolean supports(Class<?> clazz) { return true; } }
最近下载更多
15719908287 LV9
11月1日
微信网友_7134912998903808 LV9
9月14日
taoshen95 LV15
5月15日
ewan007 LV30
2023年7月4日
liaozhenlei LV8
2022年6月7日
ssnqqq LV3
2022年4月10日
wubinbin LV11
2022年4月3日
jay1992 LV14
2022年1月17日
tiansitong LV14
2021年12月5日
17704627276 LV17
2021年11月30日
最近浏览更多
15719908287 LV9
11月1日
微信网友_7134912998903808 LV9
9月14日
TY0165 LV20
6月24日
taoshen95 LV15
5月15日
minjing123 LV8
1月4日
iiiiiiixiiiiii LV1
2023年12月31日
shuangfu LV25
2023年12月2日
Hachi6 LV13
2023年8月17日
ewan007 LV30
2023年7月4日
buling- LV1
2023年6月8日