返回信息流public class MySecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
private static Map<String, Collection<ConfigAttribute>> resourceMap = null;
@Autowired
private UserDaoI userDao;
// 1
//构造函数,因为服务器启动时会调用这个类,利用构造函数读取所有的url、角色
public MySecurityMetadataSource() {
//初始化,读取数据库所有的url、角色
loadResourceDefine();
}
private void loadResourceDefine() {
List<Role> roles;
try {
roles = roledao.findAll();
System.out.println("进行到这儿了吗?0");
System.out.println(roles.get(0).getRolename());
//通过数据库中的信息设置,resouce和role
for(Role role: roles){
String rolename = role.getRolename();
ConfigAttribute ca = new SecurityConfig(rolename);
//查出对应的角色的资源
List<Permission> permissions = role.getPermission();
for(Permission p:permissions){
String url = p.getUrl();
// * 判断资源文件和权限的对应关系,如果已经存在相关的资源url,则要通过该url为key提取出权限集合,将权限增加到权限集合中。
if(resourceMap.containsKey(url)){
Collection<ConfigAttribute> value = resourceMap.get(url);//取出这个url的权限集合
value.add(ca);
resourceMap.put(url, value);
}else{
Collection<ConfigAttribute> atts = new ArrayList<ConfigAttribute>();
atts.add(ca);
resourceMap.put(url, atts);
}
}
}
--------------------------------------------------------------------
-------------------------------------------------------------------
Caused by: java.lang.NullPointerException
at edu.security.MySecurityMetadataSource.loadResourceDefine(MySecurityMetadataSource.java:173)
at edu.security.MySecurityMetadataSource.<init>(MySecurityMetadataSource.java:84)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
... 60 more[/color]
这是一条镜像帖。来源:北邮人论坛 / www-technology / #29963同步于 2015/4/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
[问题]spring security中怎么注入bean 跪求大神
lovelife
2015/4/27镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复