Ralasafe Demo 运行和使用说明

文档版本: 1.0v

简介

Ralasafe 访问控制(数据级权限管理)中间件,是MIT协议开源免费软件产品。它使用图形化方式处理各种数据级权限管理问题,包括数据库行列级、字段内容级权限问题;它还能处理登录控制、功能级权限控制和URL权限认证。

准备工作

本文所使用的开发环境为 JDK1.7 、 Tomcat6.0, 、 MySQL Server 5.5 、 Eclipse 3.3 以及 Ralasafe1.2 。

Ralasafe安装

本文将基于 Ralasafe 官方 Ralasafe 1.2 的 Demo 进行介绍 , 请在阅读下文之前 , 下载官方 Demo 并完成部署,官方Demo 的下载地址: http://www.ralasafe.cn/download/。安装说明见解压后的下载文件。

Ralasafe web 控制端的使用

Web控制端简介

进入 RalasafeWeb 控制端:http://localhost:8080/demo/ralasafe/designer.rls 。 为了更好的理解 Ralasafe 控制端功能,将其归为四大模块: 用户管理、角色管理、权限管理以及策略管理。

Ralasafe Demo 安装运行和使用说明

用户管理模块对应的是左上角的 “ 用户管理员 ” 一栏 ,该模块用于给业务系统的用户分配角色。

角色管理模块对应右上角的 “ 角色管理员 ” 一栏 , 该模块于创建角色以及给角色设置权限 , 此处需要注意 , 在该模块中创建的用户角色将会在 “ 策略开发人员 ” 一栏中的“用户分类 ”中保存一份。

权限管理模块对应左下角的 “ 架构师 ” 一栏 , 该模块主要用于将策略人员制定好的策略汇集成各类权限控制,另外还附带了用户元数据的导入功能。

策略管理模块对应右下角的 “ 策略开发人员 ” 一栏 , 是 Ralasafe 权限控制的核心基础模块,策略人员可以在此处定制各种级别的权限策略。

Ralasafe Demo 安装运行和使用说明

上图中红色虚线框所包围的为核心功能模块,策略开发人员负责的是整个权限制定的基础工作,在规划好权限控制方案之后,就需要从此处开始整个权限控制的创建过程。

权限设计简介

Demo 部署成功后,可以在“策略开发人员”→“用户分类”中浏览默认的用户分类,按组织机构分类为:分公司用户、总公司用户、营业部用户。

假设,随着公司业务的扩展,为了满足管理的需要,需建立一个“区域用户”,用于对 某个区域分公司员工进行管理,下面以实现一个区域用户具备查询区域内分公司员工为例 , 实现一个权限控制过程。

详细的需求说明:

1 .需要建立一个区域经理的岗位;

2 .区域经理必须由总部销售人员担当;

3 .区域经理只能查询其所在区域内的分公司员工。

将需求转化为概要设计:

1 .在角色模块中创建相应的区域管理员角色;

2 .在策略模块中创建相应的区域用户的分类;

3 .在策略模块中创建相应的区域用户查询;

4 .在权限模块中创建区域管理员权限,将相应的区域用户查询挂接到该权限中。

进一步细化概要设计,假设以创建上海合肥区域管理员角色为例:

1 .在策略管理模块中创建一个查询,只能查找上海、合肥分公司的员工;

2 .在策略管理模块中创建一个用户分类,命名为“上海合肥区域用户 ”,并创建用户分类策略;

3 .在权限管理模块中创建一个权限,命名为“上海合肥员工”;

4 .在角色管理模块中创建一个角色,命名为“上海合肥区域管理员”。 接着开始一步步的实现这一权限创建过程。

实现权限控制

1.创建策略

创建上海、合肥分公司的员工查询

查询语句需要包含有用户表、公司表以及部门表,其中,上海、合肥的分公司 id 分别是 2 和 3 。可以通过查询 company 表获得分公司 id。(注:此表位于zh_mydemo的Schema下)


Ralasafe Demo 安装运行和使用说明

下面开始创建员工查询:点击控制台右下角“策略开发人员”中的“查询”菜单项,在“查询员工”组中创建一个“查询上海合肥分公司员工”的查询项。

Ralasafe Demo 安装运行和使用说明

点击OK,创建成功。

点击刚创建的查询项,接着点击右边的“编辑策略”,进入策略制定界面。在映射类中 输入:org.ralasafe.demo.Employee,然后分别双击左侧“zh_mydemo”下的 demouser、company、 department,将其添加到界面右侧中。然后点击“映射类”右侧的“OK”按钮。请务必记得点击“OK”按钮,否则在勾选表的时候,是不能建立类与字段的映射关系。

对于 demouser 表的字段,可以点击表头上方的“选择所有”选择全部字段。

Ralasafe Demo 安装运行和使用说明

同样的,勾选 company以及 department 表的 name 字段。

Ralasafe Demo 安装运行和使用说明

由于 company、department 表的 name 字段还没有与 Employee 类建立映射关系,因此我 们还需要为其建立相应的映射关系。

分别点击 company、department 表的 name 字段右侧的Ralasafe Demo 安装运行和使用说明编辑图标,在弹出的对话框中选择两个表的 name 多对应 Employee 类中的字段。company 表的 name 对应Employee 类中 的 companyName,department表的 name 对应 Employee 类中的 departmentName。

Ralasafe Demo 安装运行和使用说明Ralasafe Demo 安装运行和使用说明

操作完成后点击页面上方的“保存”链接,然后点击“测试”看看效果。如果一切顺利,在点击“运行”按钮后,会看到所有员工列表。接着,我们还需要创建 Where 查询条件,用于过滤除上海、合肥分公司以外的所有员工。在测试页面中点击“继续编辑”,回到刚才 的编辑界面。

点击编辑界面左上角的“Where”标签页,切换到 Where 条件创建页面。首先新增两个二元表达式,让 demouser[t0].companyId 列与 company[t1].id 列对应,同样,让demouser[t0].departmentId 列与dempartment[t2].id列对应。这一操作的目的是为了在demouser、company、department 表之间建立关联关系。

为了让查询区分上海分公司、合肥分公司用户,还需要增加一个条件。点击“Root expression group(AND)”节点→“新增条件组 ”,新增一个“OR”条件组。在“Expression group(OR)”条件组中新增两个二元表达式,分别让 demouser[t0].companyId 等于 2 、3 (2代表上海分公司、3 代表合肥分公司),具体操作为,在新增二元表达式的对话框中,需要将一列替换为固定值,如下图所示:

Ralasafe Demo 安装运行和使用说明Ralasafe Demo 安装运行和使用说明

完整的 Where 条件如下图所示:

Ralasafe Demo 安装运行和使用说明

最后,别忘了点击界面上方的“保存”链接,然后点击“测试”链接看看效果吧。

Ralasafe Demo 安装运行和使用说明

运行结果:

Ralasafe Demo 安装运行和使用说明

至此,我们已经完成了整个查询的建立过程。

创建上海合肥区域用户

在需求中描述,区域管理员角色只能由总部的销售部人员担任,因此,用户分类中,需 要建立一个策略,限制该分类用户必须是总部员工,并且隶属于销售部。

同样的,需要知道销售部的 ID 号,可以通过在 MySQL 中查询 department 表获得。

Ralasafe Demo 安装运行和使用说明

而判断用户是否为总部用户,可以通过用户的 companyLevel 字段来判断,仅 当 companyLevel 等于 1 时为总部用户。关于 companyLevel 值的定义请查看 company 表。

下面介绍用户分类的创建过程。

在控制台右下角中点击“用户分类”→“按组织机构分类”,在该节点下创建一个“上海合肥区域用户”分类,然后选中该用户分类,点击右侧的“编辑策略”链接,在策略界面 中,通过点击表格“操作”列右边的Ralasafe Demo 安装运行和使用说明添加按钮,添加 4 行变量:userCompanyLevel、OfficeCompanyLevel、OfficeDepartment、userDepartment.

Ralasafe Demo 安装运行和使用说明

在添加变量时,请按照上图添加对应的变量以及变量类型。然后接着点击“表达式”页 面标签新增两个二元表达式。

Ralasafe Demo 安装运行和使用说明

之前定义变量的用途,其实就是为了通过表达式定义, 在变量和用户类字段中建立一种约束关系 。此处表达式的含义是,用户必须是隶属于总部以及总部的销售部门。

当查询和用户分类创建好之后,实际上权限创建过程已经基本完成,接下来就是要在查询及用户分类中创建一种关联关系,只有完成这一步,才能实现真正意义上的权限控制。

2.创建权限控制

创建权限相对简单。点击控制台左下角的“权限”菜单项进入权限创建界面,点击菜单树根节点,创建一个名称为“区域用户管理”的组,然后在组中创建一个名称为“查询上海合肥员工”的权限,如下图所示。

Ralasafe Demo 安装运行和使用说明

创建权限时,必须给权限指定一个常量名称(QUERY_SH_EMPLOYEE),该常量名称可以自由定义,最好能够直接 表现权限的含义,该常量将在以后的业务系统开发中用到。其他输入项保持默认即可。创建好权限之后,在左侧菜单树中选中该菜单项,点击右侧的“编辑策略”链接,进入权限策略创建界面。选择权限类型为查询权限,点击OK。

Ralasafe Demo 安装运行和使用说明

权限策略的创建比较简单,只需点击表格头“操作”右侧的Ralasafe Demo 安装运行和使用说明添加按钮,选择相应的选 项即可,如下图所示。

Ralasafe Demo 安装运行和使用说明

添加完成后,权限列表为:

Ralasafe Demo 安装运行和使用说明

创建好之后,点击“保存”链接,然后点“测试”链接看看效果吧。下面给出总公司用 户列表,可根据这些用户所属部门验证权限控制是否正确。

Ralasafe Demo 安装运行和使用说明

在刚开始创建好权限的时候,所有测试都是失败的,这是怎么回事呢?因为在测试之前,我们还有两步工作需要完成,第一步是创建角色,第二步的给用户授权。

3.创建角色

创建角色过程非常简单,只需要进入“角色管理员”→“角色”界面,点击 添加按钮 创建一个“上海合肥区域管理员”角色,如下图所示:

Ralasafe Demo 安装运行和使用说明

添加成功后:

Ralasafe Demo 安装运行和使用说明

角色创建好之后,还需要给该角色指派权限。点击“上海合肥区域管理员”角色右侧的 Ralasafe Demo 安装运行和使用说明分配权限按钮。在列出的权限树中勾选 “查询上海合肥员工”权限,然后点击“OK”按 钮保存。这样,我们就完成了将该权限指派给 “上海合肥区域管理员”角色,如下图所示。

Ralasafe Demo 安装运行和使用说明

这里需要特别说明的是,当创建角色之后,在 “策略开发人员”一栏中的“用户分类” 的“角色”菜单项中会看到对应的角色。

4.给用户授权

在控制台中点击左上角的“给用户分配角色”,分别给刘灿和王胜利授予“上海合肥区域管理员”角色。然后回到权限界面中重新对“查询上海合肥员工”权限进行测试。

Ralasafe Demo 安装运行和使用说明

Ralasafe Demo 安装运行和使用说明

通过测试后我们发现,刘灿通过了测试,但是王胜利没有通过,其实这正是我们想要的结果,因为王胜利是分公司用户,不属于总部,不在可授权范围内。

下面给出测试结果图:

Ralasafe Demo 安装运行和使用说明Ralasafe Demo 安装运行和使用说明

Ralasafe Demo 安装运行和使用说明

参考资料:

Ralasafe 官方网站: http://www.ralasafe.cn

Ralasafe 官方论坛: http://www.ralasafe.cn/rs-forum/

Ralasafe 官方 Wiki:http://www.ralasafe.cn/wiki/doku.php?id=ralasafe

相关文章: