标签:cti sim eth warning simple uri return over min
1.修改BosRealm中的授权方法
//授权方法
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
//创建授权信息对象
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//根据当前用户查询数据库,获取实际对应的权限
List<Function> list = null;
//获取当前登录的用户对象
User user = (User) SecurityUtils.getSubject().getPrincipal();
//User user2 = (User) principals.getPrimaryPrincipal();
if(user.getUsername().equals("admin")){
//超级管理员用户
DetachedCriteria dc = DetachedCriteria.forClass(Function.class);
list = functionDao.findByCriteria(dc);
}else{
//根据用户ID查询其拥有的权限
list = functionDao.findFunctionListByUserId(user.getId());
}
//遍历权限集合
for (Function function : list) {
info.addStringPermission(function.getCode());
}
//返回授权信息对象
return info;
}
2.实现根据用户ID查询对应的权限
/**
* 根据用户ID查询对应的权限
*/
@Override
public List<Function> findFunctionListByUserId(String id) {
//涉及5张表的关联查询,使用hql由于省略的中间表,剩下3个类的关联查询
String hql = "SELECT DISTINCT f FROM Function f LEFT OUTER JOIN f.roles r LEFT OUTER JOIN r.users u WHERE u.id=?";
@SuppressWarnings("unchecked")
List<Function> find = (List<Function>) getHibernateTemplate().find(hql, id);
return find;
}
标签:cti sim eth warning simple uri return over min
原文地址:http://www.cnblogs.com/tommychok/p/7420475.html