这里主要解决的是多个角色,交叉对一条数据的读取解决权限,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"));
相关推荐
权限是细粒度的控制单位,它们可以被分配给一个或多个角色,而角色再被分配给用户。 在Java中实现用户角色权限管理,通常会使用以下技术或框架: - **Spring Security**:这是一个强大的安全框架,可以处理认证和...
Jeesite是一个流行的Java Web框架,它提供了丰富的功能,包括数据管理、权限控制、表单构建等。本篇文章将详细探讨如何在Jeesite项目中实现图片上传至数据库,并进行解析与展示。 首先,我们来理解“图片上传到...
例如,可以创建一个`OpcItem`对象,设置其项路径,然后通过`OpcGroup.Read`方法获取数据。 6. **处理OPC事件**: 对于实时性要求较高的应用,除了主动读取数据外,还可以注册事件处理程序,以响应OPC数据的实时...
综上所述,Jeesite依赖包中的每个组件都扮演着至关重要的角色,共同构建了一个强大而全面的企业级应用框架。理解这些组件的功能和相互作用,对于开发者来说至关重要,可以更好地利用Jeesite进行项目开发和维护。
在“labview读取excel中每一个单元的数据”这个主题中,我们将深入探讨如何使用LabVIEW与Excel交互,特别是如何通过ActiveX自动化服务器来实现这一目标。 首先,我们要理解ActiveX自动化技术。ActiveX是微软提出的...
13. **缓存机制**:Jeesite可能使用Redis或 Ehcache 进行缓存管理,以提高数据读取速度。 14. **日志管理**:良好的日志记录有助于问题排查,Jeesite可能集成Log4j或Logback进行日志记录。 15. **国际化与本地化**...
Jeesite是一个开源的Java Web框架,它集成了Hibernate、Spring和Shiro等组件,构建了一个强大的企业级应用开发平台。这篇文档将深入探讨这三大技术在Jeesite中的运用及它们之间的协同工作原理。 **一、Hibernate:...
在VB(Visual Basic)编程环境中,串口通信是一种常见的硬件交互方式,用于设备间的双向数据传输。本项目涉及的关键知识点包括VB串口编程、数据读取、数据保存以及数据显示为曲线,这些都是构建串口通信应用的基础。...
- **概念**:多数据源是指在一个报表设计中同时使用多个数据源进行数据填充的技术。这些数据源可以是不同的数据库连接、XML文件、JavaBean对象等。 - **应用场景**:例如,一个报表中需要同时展示来自不同数据库的...
标题中的“DTU 数据读取”指的是通过编程方式,尤其是使用Java语言,从Data Transfer Unit(DTU)设备中获取并处理数据的过程。DTU是一种远程无线数据...这些内容对于理解并实现一个完整的DTU数据读取系统至关重要。
QT库是一种跨平台的C++图形...在实际应用中,你可能需要对数据进行预处理,例如转换数据格式,处理缺失值,或者调整曲线的样式和颜色。此外,还可以添加交互功能,如鼠标点击获取坐标,拖动缩放等,以增强用户体验。
5. **写入NFC数据**: 要向NDEF标签写入数据,首先需要创建一个`NdefMessage`,包含一个或多个`NdefRecord`。每个`NdefRecord`包含类型、标识符和数据。然后,使用`Ndef`对象的`makeReadOnly()`方法确保标签在写入后...
主线程负责串口数据的读取,而另一个辅助线程则定时执行保存数据到Excel的操作。可以使用`Thread`类来创建新线程,并使用`start()`方法启动它。 最后,提到的PyQT5是一个强大的GUI库,它允许我们创建交互式用户界面...
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++语言并可以用来构建...
- **RXTX库**: 为了解决这个问题,社区开发了RXTX库,它是一个开源的、跨平台的Java串口通信库,支持Java 6及以上版本,兼容Windows、Linux和Mac OS等操作系统。 - **设置串口参数**: 在RXTX库中,可以通过`...
3. 在 Form1.cs 中添加一个按钮和一个文本框,用于显示读取的数据。 4. 在按钮的点击事件中,使用 OPC 客户端连接到 WinCC 服务器,读取变量的值,并将其显示在文本框中。 5. 保存并运行程序,即可读取到 WinCC 中的...