`
sunbin
  • 浏览: 356338 次
  • 性别: 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依赖包

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

    labview读取excel中每一个单元的数据

    在“labview读取excel中每一个单元的数据”这个主题中,我们将深入探讨如何使用LabVIEW与Excel交互,特别是如何通过ActiveX自动化服务器来实现这一目标。 首先,我们要理解ActiveX自动化技术。ActiveX是微软提出的...

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

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

    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文件中同时含有中英文字符和数值数据时,读取会变得复杂一些...

    VC++ libusb实现USB数据读取

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

    QT读取数据并绘制曲线

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

    android 实现Nfc数据读取和写入

    5. **写入NFC数据**: 要向NDEF标签写入数据,首先需要创建一个`NdefMessage`,包含一个或多个`NdefRecord`。每个`NdefRecord`包含类型、标识符和数据。然后,使用`Ndef`对象的`makeReadOnly()`方法确保标签在写入后...

    Modbus通用数据读取工具

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

    C++读取excel数据

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

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

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

    JeeSite接私活的最佳助手(快速后端开发框架)

    4. **Ehcache**:一个纯Java的缓存系统,能够有效地提高应用程序性能,尤其是在读取频繁但更新较少的数据时。 5. **Activiti**:一个轻量级的工作流引擎,主要用于流程设计、流程执行以及流程监控等方面。 #### ...

    java 读取串口数据(绝对可使用)

    Java 读取串口数据是Java编程中一个重要的部分,特别是在物联网(IoT)设备通信、嵌入式系统以及工业自动化等领域。RXTX库是一个流行的开源Java库,用于实现与串行端口(COM口)和并行端口的交互。在本教程中,我们将...

    GPS NMEA数据读取与解析

    单片机51读取GPS NMEA0183格式及解析;... gps.c,gps.h 读取GPS NMEA数据及解析位置,时间,和卫星状态。 主要包括了GGA和RMC数据读取及解析;时区调整。 &lt;br&gt;采用的是upsd3300单片机(51系列);

    基于opc的使用c#读取wincc数据的方法

    3. 在 Form1.cs 中添加一个按钮和一个文本框,用于显示读取的数据。 4. 在按钮的点击事件中,使用 OPC 客户端连接到 WinCC 服务器,读取变量的值,并将其显示在文本框中。 5. 保存并运行程序,即可读取到 WinCC 中的...

Global site tag (gtag.js) - Google Analytics