在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色、用户可访问的模块(菜单)与相应的操作权限、需要给某些角色添加与移除相应的用户等等,如果没有一个灵活可靠的配置管理工具将会使权限控制变得十分麻烦。用户授权管理模块就是为了方便用户、角色权限的集中统一管理而开发的模块。在用户授权管理模块,操作员可以添加或移动用户到指定的角色、可以分配或授予指定用户的模块(菜单)的访问权限、可以收回或分配指定用户的操作(功能)权限、可以对所有用户、角色、模块(菜单)、操作(功能)权限进行集中批量设置,用户授权范围内的设置,表字段权限的设置以及表约束条件权限的设置等,用户授权管理如下图所示。

用户权限设置
用户权限设置可以集中设置当前所选用户的归属角色、模块(菜单)访问权限、拥有的操作权限,是权限设置中经常使用的一个功能,用户权限设置如下图所示。在"用户权限设置"界面,我们可以很方便的清除当前用户所拥有的所有权限,也可以对其进行模块及操作权限的设置。选中复选框即拥有相应的权限,取消选择即收回其对应的权限。

上图的用户权限设置界面,最上面是业务系统选择下拉列表,这儿列出了所有的子系统可供选择,选择一个子系统后下面就会显示当前子系统所有的模块列表。选中对应模块前面的复选框就表示授予当前模块可访问的权限,选择一个模块后,右边会列出当前模块所有的操作权限项列表,同理要授予某操作权限项,只需选中前面的复选框,取消权限只需要取消复选框的选择即可。右边的复选框可以操作的前提是左边其对应的模块的复选框被选中,否则就是灰色的不可选择,如下图所示。

用户角色关联
用户角色关联可以方便的添加与移除当前选择用户所归属的角色,用户归属于某个角色,就意味着该用户"继承"了该角色所拥有的一切权限。用户角色关联如下图所示。在用户角色关联操作界面上,我们可以为当前用户添加可用角色,也可以移除已经拥有的角色,同时可以查看当前选中角色所拥有的模块(菜单)访问权限。

单击"添加角色"按钮,打开"选择角色"窗口,选择相应角色后确定即可把所选角色附加到指定的用户上。"选择角色"如下图所示。如果角色过多,可以通过"角色分类"进行过滤。

要移除角色只需要在用户角色关联窗口选中要移除的角色,单击"移除"即可。需要说明的是:移除该角色,该用户就不再具有该角色所拥有的相应模块(菜单)访问权限与相应的操作权限等。需要注意的是用户默认角色不能在这儿移除,需要通过修改用户选择默认角色来进行修改。在"用户角色关联"界面上,我们还可以查看所选角色所拥有的模块(菜单)访问权限,以为我们做出正确的角色分配提供依据,如下图角色模块(菜单)权限所示。

用户角色集中批量设置
在"用户授权管理"主界面单击"用户角色关联"即可打开"用户角色集中批量设置"窗口。用户角色集中批量设置可在一个操作界面对所有有效登录用户授予或收回相应的角色,方便用户操作,用户角色集中批量设置如下图所示。"清除角色"则清除当前所选用户所拥有的所有角色,"复制角色"与"粘贴角色"功能按钮可以方便的把当前所选用户的角色与另一个角色设置为一至,避免重复点击相应角色带来的麻烦,提高角色分配的效率。单击左侧的相应用户后,其所属于的角色就在右边角色列表中进行了选中。

用户授权范围设置
用户授权范围设置可以很好的实现授权的再分配,对于大的集团企业可以明显的减少管理员权限分配的负担与压力,用户授权范围可以在当前用户拥有的权限下,再次有选择的分配给其他的操作人员。通俗点讲就是,某些岗位上工作的人是管理员,但不是所有业务的管理员,只是某个业务领域内的管理员,他在这个业务领域内应该有所有的权限,而且还可以委托别人来管理、可以授权给别人来管理某个业务,这就是用户授权范围管理,类似于数据库权限中的级联授权,用户授权范围如下图所示。

在上图中可以看到还可以根据需要设置用户的"数据权限范围",通过后就可以通过我们提供的接口做数据权限范围的控制。
I、在组织机构选项页,单击"添加(D)..."可以添加需要管理的组织机构,"移动(R)"可以移除已经设置的选中的组织列表。
选择组织机构如下图所示。

II、在用户选项页,单击"添加(D)..."可以添加需要管理的用户,"移动(R)"可以移除已经设置的选中的用户列表。
选择用户如下图所示。

III、在角色选项页,单击"添加(D)..."可以添加需要管理的角色,"移动(R)"可以移除已经设置的选中的角色列表。
选择角色如下图所示。

IV、在模块(菜单)选项页,单击"添加(D)..."可以添加需要管理的模块(菜单),"移动(R)"可以移除已经设置的选中的模块(菜单)列表。
选择模块(菜单)如下图所示。

技巧提示:上面的所有选择都是多选,可以按 Control 或 Shift 辅助鼠标左键加速操作。
下面我们演示下范围权限,比如当前用户"rdiframework"授予的组织机构范围权限如下图所示。

下面我们以"rdiframework"登录框架后打开"组织机构管理"模块,如图 4.11.4-3 查看用户对组织机构授权范围设置的效果。可以看到用户"rdiframework"可以访问的组织机构范围已经控制在了我们限制的范围中了,这样就可以让不同区域的管理者管理自己所在的组织机构而不用展示全部组织机构,做到范围授权。

我们进入对应的用户管理或员工职员管理,左侧的组织机构也已经在我们设置的范围内了,如下图所示。

表字段权限设置
在某些应用中,我们有时需要针对不同的登录用户设置其对特定表的访问,列的访问、编辑权限。在"表字段权限设置"中我们可以设置用户可以访问的数据表,以及对数据表列的访问、编辑、拒绝访问权限。用户的表字段权限设置如图下图所示。

在表字段权限设置窗口,左侧列出的数据表,选中即拥有对该表的访问权限,取消则会拒绝访问该表,同时该表对应的列访问、编辑、拒绝访问权限也会同步取消。如果左侧没有列出我们需要的数据表,可以通过"表字段综合管理"模块->"设置权限控制表"进行设置。
约束条件权限设置
有时我们需要针对不同的用户设置其可以看到某个数据表的数据的条件,在我们这儿就是约束条件,用户对表约束条件设置如下图所示。

在上图中,我们设置所选用户对数据表"产品表"的约束条件为"PRDUCT_PRICE>500",在开发过程中,通过我们的服务接口来得到这个约束条件表达式,就可以对相应用户进行表数据约束的控制了。
要设置相应数据表的约束条件,我们可以单击"设置约束条件表达式"按钮,进行所选表对当前所选用户约束条件进行设置,如下图所示。

设置好后,我们还可以验证我们设置的约束表达式是否符合要求,同时还可以查看所选用户在该表设置的约束条件下所看到的数据(通过查看约束数据集),同时还可以验证我们所设表达式是否符合语法要求,如下图所示。设置好后,就可以调用我们的接口来做相应的表数据控制。在"表约束条件"窗口单击"导出"可把当前用户的表约束条件导出到 Excel。

同时我们还可以查看当前所设置的约束条件下的数据集,如下图所示,在"查看约束数据集"窗口,我们还可以把查看的数据集导出到 Excel。

锁定用户
当需要限制某个用户登录时,我们可以锁定用户一段时间(锁定的时间长度可以通过配置变量:[PasswordErrorLockCycle 来设置锁定的长度,默认是30 分钟才允许其登录,锁定用户如下图所示。

锁定成功后如下图所示。

对于锁定的用户,用户就不能登录了,如下用被锁定的用户去登录就会提示"登录账户被锁定",如下图所示。

解锁用户
如果需要手动解除用户的锁定,可以选择对应用户,再单击工具栏"访问控制"下拉下的"解锁用户"按钮即可,解锁用户如下图所示。

用户登录时间控制
用户登录时间的控制也是非常常用的功能,可以设置用户允许登录与结束登录的日期,以限定这个用户只能在一个特定的时间段内允许登录,由此可以挖掘很多常用的应用,用户登录时间控制如下图所示。

用户在被锁定时间范围是不允许登录的,如下图所示。

用户权限扩展设置
在实际应用在我们可能会有这样的需求,某个操作权限项(按钮)或菜单在某个时间范围内可以让指定用户访问。此时通过我们的用户权限扩展设置就可以办到。主要是针对用户对操作权限项、用户对模块在指定时间范围内有效的设置。
设置过程中有以下几个方面需要注意:
1、模块与操作权限项的访问权限复选框选中即可授予对应的权限,同时可直接在 TreeList 界面单击设置"开始生效时间、结束生效时间",设置后鼠标移走会自动保存所设置。
2、对于公开模块不需要设置模块访问权限,单击复选框右下角会自动提示。
3、对于可访问的模块设置了有效开始/结束时间的,取消可访问,要同时清除界面上"开始生效时间、结束生效时间"的显示,可访问操作权限的同理。
4、只要设置了模块的可访问权限后,才对设置此模块对应的操作权限(可编辑,否则不可编辑)。
5、两个 TreeList 界面只开放"开始生效时间、结束生效时间"两列的可编辑性,同时要在设置了可访问权限的基础上才可编辑。
6、对于两个 TreeList 控件是联动显示,选中一个模块后,联动显示选中模块对应的操作权限项。
7、单击"清除权限"按钮,可清除当前用户所有的模块与操作权限项的可访问权限。
用户权限扩展设置如下图所示,设置成功后,屏幕右下侧会自动弹出提示。

在上图中设置了模块的可访问权限才能设置对应模块的操作权限项,否则操作权限项列表是不可编辑的,如下图所示。
