3.6.URL权限控制

2023-07-03 17:06 更新
权限是框架的核心,BDF2中的权限是以SpringSecurity3.1为基础实现,使用时以角色为中心,将资源(URL或组件)与角色绑定,再将各种类型的成员(用户、部门、岗位、群组)放置到角色当中,在放置成员到角色的过程当中还可以设置是否授权,从而实现权限加减功能。如下图所示:

从上图当中,可以看到URL权限在操作过程当中以角色为中心,首先创建角色,然后将角色与需要进行权限管控的URL关联(如上图中的URL1,URL2),接下来将角色成员放到角色当中,BDF2中允许的角色成员有三类,分别是:用户、岗位、部门和群组,且成员在放置到角色中时还可以设置该成员在这个角色中的权限(能不能访问这个角色所拥有的资源)。

以上图为例,用户A在角色A中的权限为允许访问,那么用户A就可以访问角色A中的URL1和URL2两个资源,同样岗位A在角色A中的权限也是允许访问,那么所有岗位是岗位A的用户都可以访问角色A中的资源,也就是URL1和URL2;而部门A和群组A在角色A中的权限为禁止访问,也就是说隶属于部门A和群组A的用户都不能访问角色A中的资源(URL1和URL2)。

BDF2当中,角色的四种类型的成员在进行权限计算的时候是有优先级的,如上图所示,权限最先计算的是用户,然后是岗位,接下来是部门,最后是群组,如果在用户层面已经明确取得当前用户对某资源的访问权限(允许或拒绝),那么就不再计算后面的岗位、部门和群组,同样如果在用户这个层面没有得到某资源的访问权限,就会用这个用户所在的岗位进行计算...,依次类推。还以上图为例,假如用户A隶属于部门A,但不在岗位A与群组A当中,那么用户A在角色A中的权限又是什么呢?通过上面描述的规则,那么用户A对角色A中的两个URL资源是允许访问,因为用户A直接与角色A绑定,且访问权限是允许,所以权限在计算时在用户层面就可以得到答案,而不再向下进行计算,所以用户A可以访问角色A中两个URL资源。

上述角色成员计算的规则其实就是SpringSecurity中投票器的计算规则,利用这个规则我们就可以实现权限的加减。举个例子,假如有一个部门X,其中有1000个人,这1000人都可以对资源X进行访问,现在这个部门来了个新同事X,因为其还处于试用期,所以还不能访问资源X,这时在进行权限设置时就可以利用权限的加减法实现,具体做法是:创建一个角色,比如角色X,在这个角色当中放置资源X,然后将部门X与这个角色X关联且访问权限为允许,同时再把这个新同事X与这个角色X关联,访问权限为拒绝,这样就可以实现我们需要的权限功能,这也是权限加减功能最好的应用示例,如下图所示:

在权限管理菜单组当中,我们可以找到针对角色、角色资源、角色成员及群组维护的菜单项,在进行URL权限管理时,首先我们需要添加相关角色(角色维护中添加),然后通过URL权限维护将需要权限管理的URL与角色关联起来,最后利用角色成员维护把成员(用户、岗位、部门及群组)放到这个角色当中,角色维护效果页面如下:

可以看到,这里在建立角色与URL关联的操作过程当中,可以看到URL我们只需要勾选就行,如果其中不存在你需要管控的URL,那么,可以在菜单维护页中把需要的URL添加进去即可,如果添加的URL不想成为导航菜单,只需要将是否用于导航设置为否即可。最后,就是将成员放置到角色当中,如下图所示:

在上图所示,无论是添加用户还是岗位还是部门还是群组成员,都可以设置这个成员在当前角色中的权限(是否授权)。
在维护完成角色资源或角色成员后,要使权限生效,我们必须要点击工具栏上的”刷新缓存“按钮,否则权限将不生效。同时如果您是在集群环境下,那么可以采用BDF2-WEBSERVICE模块提供的权限缓存同步刷新或Terracotta Server来实现权限信息的同步刷新(我们这里推荐使用BDF2-WEBSERVICE模块提供的权限缓存同步刷新)。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号