浅谈OFBiz之权限设计

Apache Open For Business(Apache OFBiz) 是Apache开源的一个经典ERP项目。它提供了一套企业应用,用于集成以及自动化一些企业的“商业流程”。

从学习角度来看,它也是一个非常不错的企业级应用框架。这篇文章从OFBiz的权限设计这一切入点来谈谈OFBiz对于应用系统的权限设计。

设计思想简述

OFBiz采用的“安全组”(Security Group)来将"权限"跟"用户"联系起来。系统中有若干种权限,比如系统预置的权限、用户自定义的权限、资源的权限、操作的权限等等,这些权限会跟安全组建立关系(多对多的关系),而用户又与安全组建立关系(也是多对多的关系)。

其中,系统预置权限,是以XML配置的方式导入数据表的。这些配置文件通常的路径为{Component/Application baseDir}/data/XXXSecurityData.xml。这里有对整个权限设计相关表的初始化数据。

权限控制级别

OFBiz对于权限有如下几个控制级别:

登录级别

在每个Component的根目录下的ofbiz-component.xml文件下,有对于访问该component的“最基本的权限”定义。所谓最基本的权限,就是登录该component的用户需要至少拥有该文件内定义的权限才可以访问。示例:

浅谈OFBiz之权限设计

见其中的“base-permission”属性。可以看到它包含了两个权限值——OFBTOOLS/FACILITY,这也意味着你必须同时拥有这两个权限才能访问该组件。而通常一个Component也会同时包含权限“OFBTOOLS”以及权限“COMPONNENT-NAME_VIEW”,这样配置的目的是OFBTOOLS用于对web app的访问进行控制,而COMPONNENT-NAME_VIEW用于控制浏览web app的信息。

component 菜单级别

component的顶级菜单显示的组件将只对登录过的用户(并且这些用户至少具有“WEBAPP-NAME_VIEW”或者“COMPONENT_NAME-ADMIN”权限)显示,这跟登录级别的限制相似。这种级别的访问控制实现在“appbar.ftl”中用以控制显示哪些应用程序的tab bar。

request(controller.xml)级别

这里有两个重要的参数,在每个component的webapp下的controller.xml中的每个request(<request-map)标签有一个security(<security)标签,包含了两个属性:

https:定义是否对该请求应用SSL加密

auth:定义是否需要登录才能执行该请求,因此只有在登录成功以及在其他级别上的安全检查通过后,该请求才会被执行

<!-- Request Mappings -->
    <request-map uri="MarketingReport">
        <security https="true" auth="true"/>
        <response type="view" value="MarketingReport"/>
    </request-map>

screen级别

在每个component下的widget文件夹下的screen配置文件中,<section节点下的<condition子节点,存在一个名为<if-has-permission的节点,它有两个属性:

permission:标识位于哪个component

action:标识执行的动作

permission_action正好构成一个权限,示例:

浅谈OFBiz之权限设计

OFBiz 的详细介绍请点这里
OFBiz 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ef9b5d70ed6f0124fc8e4b39192a6602.html