码迷,mamicode.com
首页 > 其他好文 > 详细

042 动态维护权限数据 - bos

时间:2017-08-23 23:02:47      阅读:194      评论:0      收藏:0      [点我收藏+]

标签: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;
}

042 动态维护权限数据 - bos

标签:cti   sim   eth   warning   simple   uri   return   over   min   

原文地址:http://www.cnblogs.com/tommychok/p/7420475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!