042 动态维护权限数据 - bos

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;
}

时间: 2024-12-23 13:46:58

042 动态维护权限数据 - bos的相关文章

043 使用ehcache缓存权限数据 - bos

1.若不使用缓存,会频繁查询数据库,因此要为权限数据建立缓存 2.ehcache是一个缓存插件,可以缓存Java对象提高系统的性能 3.ehcache.xml配置文件样例 <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"> <diskStore pa

业务逻辑:五、完成认证用户的动态授权功能 六、完成Shiro整合Ehcache缓存权限数据

一. 完成认证用户的动态授权功能 提示:根据当前认证用户查询数据库,获取其对应的权限,为其授权 操作步骤: 在realm的授权方法中通过使用principals对象获取到当前登录用户 创建一个授权信息对象 根据用户查询角色列表,并遍历角色列表 在循环体中将角色关键字添加到授权信息对象的角色属性中 根据用户查询权限列表,并遍历权限列表 在循环体中将权限关键字添加到授权信息对象的权限属性中 在角色与权限service类的根据用户查询角色与权限方法中判断用户是否为系统管理员 如果是系统管理员就查询出所

项目一:第十三天 1、菜单数据管理 2、权限数据管理 3、角色数据管理 4、用户数据管理 5、在realm中动态查询用户权限,角色 6、Shiro中整合ehcache缓存权限数据

1 课程计划 菜单数据管理 权限数据管理 角色数据管理 用户数据管理 在realm中动态查询用户权限,角色 Shiro中整合ehcache缓存权限数据         2 菜单数据添加 2.1 使用combotree父菜单项数据     1. 页面:menu_add.jsp 2. 修改组件样式:easyui-combotree,修改url  树型表格treeGrid跟下来数combotree要求数据格式基本一致. Combotree通过text属性展示文本.   3. 使用treegrid组件的

Shiro学习(19)动态URL权限限制

用过Spring Security的朋友应该比较熟悉对URL进行全局的权限控制,即访问URL时进行权限匹配:如果没有权限直接跳到相应的错误页面.Shiro也支持类似的机制,不过需要稍微改造下来满足实际需求.不过在Shiro中,更多的是通过AOP进行分散的权限控制,即方法级别的:而通过URL进行权限控制是一种集中的权限控制.本章将介绍如何在Shiro中完成动态URL权限控制. 本章代码基于<第十六章 综合实例>,请先了解相关数据模型及基本流程后再学习本章. 表及数据SQL 请运行shiro-ex

Android之动态申请权限(API23以上需求)

API 23之前的版本都是自动获取权限,而从 Android 6.0 开始添加了权限申请的需求,更加安全. 这里以单个存储权限为例: · 在 Manifest 中添加访问权限:(只需设置可写,因为可写必定可读) <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> · 动态申请权限的过程: 1 package com.dragon.android.permissionreque

【BZOJ-2460&amp;3105】元素&amp;新Nim游戏 动态维护线性基 + 贪心

3105: [cqoi2013]新Nim游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 839  Solved: 490[Submit][Status][Discuss] Description 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴,但不能同时从超过一堆火柴中拿.拿走最后一根火柴的游戏者胜利. 本题的游戏

ACM-树重心的性质及动态维护

本文转自http://fanhq666.blog.163.com/blog/static/81943426201172472943638/ 求树重心的方法:(NlogN) http://www.cnblogs.com/qlky/p/5780933.html 还记得曾经提到过的树的“重心”吗?重心的定义是:以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半. 树的重心的一个的性质: 树中所有点到某个点的距离和中,到重心的距离和是最小的:如果有两个重心,那么他们的距离和一样

SSAS中CUBE行权限数据级权限控制

原文:SSAS中CUBE行权限数据级权限控制 去年做了一个数据仓库的项目,其中涉及到了CUBE数据级权限的控制.在网上找这方面的资料,找到一个[BI] 通用数据级权限控制解决方案的实现(二):Cube中的角色设置与数据级权限控制.根据这个大牛的思路,做完之后发现有几个问题: 1. 传递给CUBE的用户必须是域用户或者数据库服务器WINDOWS用户.如果BI系统不是用的AD域认证而是传统的FORM认证,那么,BI里的用户需要对应一个WINDOWS用户. 2. 另外的WEB程序里保存对cube的角色

Android 6.0开始动态请求权限

转载请注明来源: http://blog.csdn.net/kjunchen/article/details/51366845 动态请求权限 从Android 6.0(API 23)开始,允许用户在应用运行时决定是否允许权限,而不是在应用安装的时候.这种方法简化了应用的安装过程,因为用户在安装或更新应用的时候不需要允许权限.他也让用户对应用的功能有更多的控制:例如,用户可以选择给予相机应用相机的权限但是不允许使用设备位置的权限.用户可进入应用设置随时撤销权限. 系统权限被分为两种类型,正常的(n