这里主要解决的是多个角色,交叉对一条数据的读取解决权限,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 是一个基于Java语言开发的企业级Web应用框架,结合了MySQL数据库的强大功能,旨在提供高效、稳定且易于扩展的解决方案。在本篇中,我们将深入探讨Jeesite与MySQL V5.0.1版本的集成,以及相关的...
例如,可以创建一个`OpcItem`对象,设置其项路径,然后通过`OpcGroup.Read`方法获取数据。 6. **处理OPC事件**: 对于实时性要求较高的应用,除了主动读取数据外,还可以注册事件处理程序,以响应OPC数据的实时...
综上所述,Jeesite依赖包中的每个组件都扮演着至关重要的角色,共同构建了一个强大而全面的企业级应用框架。理解这些组件的功能和相互作用,对于开发者来说至关重要,可以更好地利用Jeesite进行项目开发和维护。
在IT领域,尤其是在信号处理和数据分析的分支,雷达基数据是一个关键的概念。雷达基数据,简单来说,是指雷达系统在工作时收集的原始信号信息,这些信息未经任何处理,是后续分析、目标识别和目标定位的基础。本话题...
角色权限管理系统是企业信息化建设中的重要组成部分,它主要用于管理和控制用户对系统资源的访问权限,确保数据的安全性和系统的稳定性。本示例通过一个简单的角色权限管理系统,展示了如何利用事件驱动和延迟加载...
13. **缓存机制**:Jeesite可能使用Redis或 Ehcache 进行缓存管理,以提高数据读取速度。 14. **日志管理**:良好的日志记录有助于问题排查,Jeesite可能集成Log4j或Logback进行日志记录。 15. **国际化与本地化**...
综上所述,"jsp做的权限管理系统"是一个全面的解决方案,它涉及到用户管理、角色划分、权限控制以及相应的验证机制。通过这样的系统,可以有效地保障系统的安全性和数据的完整性,同时提供灵活的角色分配和权限定制...
Jeesite是一个开源的Java Web框架,它集成了Hibernate、Spring和Shiro等组件,构建了一个强大的企业级应用开发平台。这篇文档将深入探讨这三大技术在Jeesite中的运用及它们之间的协同工作原理。 **一、Hibernate:...
在VB(Visual Basic)编程环境中,串口通信是一种常见的硬件交互方式,用于设备间的双向数据传输。本项目涉及的关键知识点包括VB串口编程、数据读取、数据保存以及数据显示为曲线,这些都是构建串口通信应用的基础。...
同花顺是中国领先的互联网金融信息服务提供商,其提供的历史数据包括股票、期货、基金等多个品种的日线、分钟线等多种时间周期的数据。这些数据通常包含开盘价、收盘价、最高价、最低价以及成交量等关键指标,对于...
- **概念**:多数据源是指在一个报表设计中同时使用多个数据源进行数据填充的技术。这些数据源可以是不同的数据库连接、XML文件、JavaBean对象等。 - **应用场景**:例如,一个报表中需要同时展示来自不同数据库的...
QT库是一种跨平台的C++图形...在实际应用中,你可能需要对数据进行预处理,例如转换数据格式,处理缺失值,或者调整曲线的样式和颜色。此外,还可以添加交互功能,如鼠标点击获取坐标,拖动缩放等,以增强用户体验。
3.如果是通过TCP/IP的方式,进行数据读取的,请使用TCP Client的通信方式。 4.如果设备是通过UDP的方式进行通信的,请设通信 类型为UDP Client。 5.通信类型选择之后,并且打开相应的链接或端口之后,请选择 小工具-...
读取环境为Win10+VS2015,个人参考资料封装的excel读取模块用来读取Excel2007中的数据,文件为压缩文件,亲测可用。
使用MATLAB读取SLC数据,支持各种合成孔径雷达数据
综上所述,ASP.NET完整权限管理系统是一个集成了角色、用户和模块管理功能的解决方案,通过与数据库的交互,实现了对用户权限的精细控制。这样的系统对于多用户、多权限场景的企业级应用来说尤其重要,能够确保系统...
libusb是一个跨平台的开源库,它为开发者提供了一种直接与USB设备通信的API,而无需依赖操作系统特定的驱动程序。对于Windows系统,VC++(Visual C++)是微软开发的一种强大的编程环境,它支持C++语言并可以用来构建...
保存的数据很好确定,只要分配一个 32bytes 的 buffer 就好了。要确定保存数据的地址,就要知道已经写了多少 bytes 的空间,根据数据的格式,采用查询的方法,因为 0xAB 是起始标志,因此我们只要从该空间的首地址 0...
- **RXTX库**: 为了解决这个问题,社区开发了RXTX库,它是一个开源的、跨平台的Java串口通信库,支持Java 6及以上版本,兼容Windows、Linux和Mac OS等操作系统。 - **设置串口参数**: 在RXTX库中,可以通过`...
Java 读取串口数据是Java编程中一个重要的部分,特别是在物联网(IoT)设备通信、嵌入式系统以及工业自动化等领域。RXTX库是一个流行的开源Java库,用于实现与串行端口(COM口)和并行端口的交互。在本教程中,我们将...