`
sunbin
  • 浏览: 354467 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jeesite多个角色,交叉对一条数据的读取解决权限

 
阅读更多

这里主要解决的是多个角色,交叉对一条数据的读取解决权限,jeesite如何设置多个权限参考官方文档

1、BaseService在原有的文档中添加以下红色内容

public static String dataScopeFilter(String permission,User user, String officeAlias, String userAlias) {

 

StringBuilder sqlString = new StringBuilder();

// 进行权限过滤,多个角色权限范围之间为或者关系。

List<String> dataScope = Lists.newArrayList();

 

// 超级管理员,跳过权限过滤

if (!user.isAdmin()){

boolean isDataScopeAll = false;

for (Role r : user.getRoleList()){

Set<String> permissions=new HashSet<String>();

for (Menu menu : r.getMenuList()) {

permissions.add(menu.getPermission());

}

for (String oa : StringUtils.split(officeAlias, ",")){

if (!dataScope.contains(r.getDataScope()) && StringUtils.isNotBlank(oa)&&permissions.contains(permission)){

if (Role.DATA_SCOPE_ALL.equals(r.getDataScope())){

isDataScopeAll = true;

}

 

 

2、RoleDao.xml添加红色内容

<select id="findList" resultMap="roleResult">

SELECT <!-- DISTINCT -->

<include refid="roleColumns"/>,

ro.office_id AS "officeList.id",

rm.menu_id AS "menuList.id",

rmd.permission AS "menuList.permission"

FROM sys_role a

LEFT JOIN sys_office o ON o.id = a.office_id

LEFT JOIN sys_user_role ur ON ur.role_id = a.id

LEFT JOIN sys_user u ON u.id = ur.user_id

LEFT JOIN sys_role_office ro ON ro.role_id = a.id

LEFT JOIN sys_role_menu rm ON rm.role_id = a.id 

LEFT JOIN sys_menu rmd ON rmd.id = rm.menu_id

 

 

3、Controller调用增加红色部分

 

assessrec.getSqlMap().put("dsf", BaseService.dataScopeFilter("edu:emp:assessrec:view",assessrec.getCurrentUser(),"o","u"));

 

分享到:
评论

相关推荐

    jeesite-mysql-v5.0.1

    Jeesite-Mysql-V5.0.1 是一个基于Java语言开发的企业级Web应用框架,结合了MySQL数据库的强大功能,旨在提供高效、稳定且易于扩展的解决方案。在本篇中,我们将深入探讨Jeesite与MySQL V5.0.1版本的集成,以及相关的...

    C#访问OPC读取数据

    例如,可以创建一个`OpcItem`对象,设置其项路径,然后通过`OpcGroup.Read`方法获取数据。 6. **处理OPC事件**: 对于实时性要求较高的应用,除了主动读取数据外,还可以注册事件处理程序,以响应OPC数据的实时...

    jeesite依赖包

    综上所述,Jeesite依赖包中的每个组件都扮演着至关重要的角色,共同构建了一个强大而全面的企业级应用框架。理解这些组件的功能和相互作用,对于开发者来说至关重要,可以更好地利用Jeesite进行项目开发和维护。

    jeesite上传图片到数据库并解析展示

    Jeesite是一个流行的Java Web框架,它提供了丰富的功能,包括数据管理、权限控制、表单构建等。本篇文章将详细探讨如何在Jeesite项目中实现图片上传至数据库,并进行解析与展示。 首先,我们来理解“图片上传到...

    读取雷达基数据V2.0

    在IT领域,尤其是在信号处理和数据分析的分支,雷达基数据是一个关键的概念。雷达基数据,简单来说,是指雷达系统在工作时收集的原始信号信息,这些信息未经任何处理,是后续分析、目标识别和目标定位的基础。本话题...

    角色权限管理系统的一个简单例子

    角色权限管理系统是企业信息化建设中的重要组成部分,它主要用于管理和控制用户对系统资源的访问权限,确保数据的安全性和系统的稳定性。本示例通过一个简单的角色权限管理系统,展示了如何利用事件驱动和延迟加载...

    jeesite开发工具

    13. **缓存机制**:Jeesite可能使用Redis或 Ehcache 进行缓存管理,以提高数据读取速度。 14. **日志管理**:良好的日志记录有助于问题排查,Jeesite可能集成Log4j或Logback进行日志记录。 15. **国际化与本地化**...

    JasperReport中使用多个数据源的方法

    - **概念**:多数据源是指在一个报表设计中同时使用多个数据源进行数据填充的技术。这些数据源可以是不同的数据库连接、XML文件、JavaBean对象等。 - **应用场景**:例如,一个报表中需要同时展示来自不同数据库的...

    VB读取并保存串口数据,显示数据曲线

    在VB(Visual Basic)编程环境中,串口通信是一种常见的硬件交互方式,用于设备间的双向数据传输。本项目涉及的关键知识点包括VB串口编程、数据读取、数据保存以及数据显示为曲线,这些都是构建串口通信应用的基础。...

    jsp做的权限管理系统

    综上所述,"jsp做的权限管理系统"是一个全面的解决方案,它涉及到用户管理、角色划分、权限控制以及相应的验证机制。通过这样的系统,可以有效地保障系统的安全性和数据的完整性,同时提供灵活的角色分配和权限定制...

    jeesite web框架hibernate+spring+shiro

    Jeesite是一个开源的Java Web框架,它集成了Hibernate、Spring和Shiro等组件,构建了一个强大的企业级应用开发平台。这篇文档将深入探讨这三大技术在Jeesite中的运用及它们之间的协同工作原理。 **一、Hibernate:...

    同花顺日线数据文件读取器

    同花顺是中国领先的互联网金融信息服务提供商,其提供的历史数据包括股票、期货、基金等多个品种的日线、分钟线等多种时间周期的数据。这些数据通常包含开盘价、收盘价、最高价、最低价以及成交量等关键指标,对于...

    matlab中读取txt数据文件

    此命令将返回一个结构体`data`,其中包含了读取的数据。可以通过`data.data`来访问实际的数值数据。 #### 2. 含有中英文字符和数据的TXT文件读取 当TXT文件中同时含有中英文字符和数值数据时,读取会变得复杂一些...

    QT读取数据并绘制曲线

    QT库是一种跨平台的C++图形...在实际应用中,你可能需要对数据进行预处理,例如转换数据格式,处理缺失值,或者调整曲线的样式和颜色。此外,还可以添加交互功能,如鼠标点击获取坐标,拖动缩放等,以增强用户体验。

    DTU 数据读取

    标题中的“DTU 数据读取”指的是通过编程方式,尤其是使用Java语言,从Data Transfer Unit(DTU)设备中获取并处理数据的过程。DTU是一种远程无线数据...这些内容对于理解并实现一个完整的DTU数据读取系统至关重要。

    Modbus通用数据读取工具

    3.如果是通过TCP/IP的方式,进行数据读取的,请使用TCP Client的通信方式。 4.如果设备是通过UDP的方式进行通信的,请设通信 类型为UDP Client。 5.通信类型选择之后,并且打开相应的链接或端口之后,请选择 小工具-...

    C++读取excel数据

    读取环境为Win10+VS2015,个人参考资料封装的excel读取模块用来读取Excel2007中的数据,文件为压缩文件,亲测可用。

    VC++ libusb实现USB数据读取

    libusb是一个跨平台的开源库,它为开发者提供了一种直接与USB设备通信的API,而无需依赖操作系统特定的驱动程序。对于Windows系统,VC++(Visual C++)是微软开发的一种强大的编程环境,它支持C++语言并可以用来构建...

    python实时读取串口数据并自动保存至excel

    主线程负责串口数据的读取,而另一个辅助线程则定时执行保存数据到Excel的操作。可以使用`Thread`类来创建新线程,并使用`start()`方法启动它。 最后,提到的PyQT5是一个强大的GUI库,它允许我们创建交互式用户界面...

    SAR SLC数据读取程序

    使用MATLAB读取SLC数据,支持各种合成孔径雷达数据

Global site tag (gtag.js) - Google Analytics