67,511
社区成员
发帖
与我相关
我的任务
分享
package com.onionbbs.model;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name="Resources")
public class Resources {
@Id
@GeneratedValue
@SequenceGenerator(name="ResourcesSequence")
@Column(name="id")
private int id;
@Column(name="name",length=30)
private String name;
@Column(name="url",length=255)
private String url;
@Column(name="Enabled")
private int Enabled;
@Column(name="isSystem")
private int isSystem;
@JoinTable(name="role_resource",inverseJoinColumns=@JoinColumn(name="resources_id"),joinColumns=@JoinColumn(name="role_id"))
@ManyToMany(cascade=CascadeType.REFRESH,fetch = FetchType.EAGER)
private Set<Role> role=new HashSet<Role>();
public Set<Role> getRole() {
return role;
}
public void setRole(Set<Role> role) {
this.role = role;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getEnabled() {
return Enabled;
}
public void setEnabled(int enabled) {
Enabled = enabled;
}
public int getIsSystem() {
return isSystem;
}
public void setIsSystem(int isSystem) {
this.isSystem = isSystem;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
package com.OnionEntertainment.Security.Dao;
import java.util.List;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.onionbbs.model.Resources;
public class SecurityResourceDaoImp implements SecurityResourceDao{
private HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
@SuppressWarnings("unchecked")
public List<Resources> getAllResources() {
return this.hibernateTemplate.find(" from "+Resources.class.getName());
}
}
package com.OnionEntertainment.Security.Service;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import com.OnionEntertainment.Security.Dao.SecurityResourceDaoImp;
import com.onionbbs.model.Resources;
@Transactional
public class SecurityResourceServiceImp implements SecurityResourceService{
private SecurityResourceDaoImp securityResourcesDao;
public void setSecurityResourcesDao(SecurityResourceDaoImp securityResourcesDao) {
this.securityResourcesDao = securityResourcesDao;
}
public List<Resources> getAllResources() {
return securityResourcesDao.getAllResources();
}
}
package com.onionbbs.security;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
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.AntUrlPathMatcher;
import org.springframework.security.web.util.UrlMatcher;
import com.OnionEntertainment.Security.Service.SecurityResourceServiceImp;
import com.onionbbs.model.Resources;
import com.onionbbs.model.Role;
public class InvocationSecurityMetadataSource
implements FilterInvocationSecurityMetadataSource {
private UrlMatcher urlMatcher = new AntUrlPathMatcher();;
private static Map<String, Collection<ConfigAttribute>> resourceMap = null;
private SecurityResourceServiceImp securityResourceService;
public void setSecurityResourceService(
SecurityResourceServiceImp securityResourceService) {
this.securityResourceService = securityResourceService;
}
public void loadResourceDefine() {
resourceMap = new HashMap<String, Collection<ConfigAttribute>>();
for(Resources item:securityResourceService.getAllResources()){
resourceMap.put(item.getUrl(), listRoleToCollection(item.getRole()));
//也就是在这个地方进行加载资源所对应的权限的item.getRole()的
}
}