ofbiz 权限设计详解

ofbiz 中对权限做了完备的处理,其实权限也只是数据表一个字段,这个字段与安全组关联起来,然后将安全组与用户关联起来,就是两个多对多的关系,这样就实现了权限的分配。

涉及到的表

SECURITY_GROUP 这个表是安全组的表,用来存放安全组,其主要就是一个groupId字段

这里写图片描述

SECURITY_PERMISSION 这个是存放具体权限的表

这里写图片描述

SECURITY_GROUP_PERMISSION
将权限与安全组的关系表,因为权限和安全组是多对多的关系,所以需要一张关系表关联,这样通过查找这张表就知道某个安全组有哪些权限

这里写图片描述

UserLogin是用户登录表

这里写图片描述

USER_LOGIN_SECURITY_GROUP 这个表是用户和安全组的关联表

这里写图片描述

以上这些表就是权限设计中涉及到的主要表,其关系是:

user_login 与 security_group 是通过中间表user_login_security_group 体现多对多关系

security_group 与 security_permission 是通过中间表security_group_permission
体现多对多关系

用户与安全组通过 UserLoginSecurityGroup 这个表关联,权限与安全组通过SecurityGroupPermission 这个表关联,从而实现用户与具体的权限关联

代码层次的实现

这里写图片描述

从这个代码可以看出:

首先调用findUserLoginSecurityByUserLoginId() 根据用户id找到其所属全组,然后再调用securityGroupPermissionExists()判断这些组里有没有对应用户对应的权限,根据返回条件,再进行处理。

权限控制级别

登陆级别

在每个组件的ofbiz-component.xml文件下,有对于访问该component的“最基本的权限”定义。即登录该component的用户需要至少拥有该文件内定义的权限才可以访问。

这里写图片描述

请求级别

应用的controller.xml中的每个<request-map>标签有一个<security>
标签包含了两个属性:
https:定义是否对该请求应用SSL加密
auth:定义是否需要登录才能执行该请求,因此只有在登录成功以及在其他级
别上的安全检查通过后,该请求才会被执行

引用块内容

screen级别
在每个组件的widget文件夹下的screen配置文件中,<section>节点下的<condition>子节点,存在一个<if-has-permission>的节点,它有两个属性:
permission:基本权限
action:执行的动作
permission_action正好构成一个权限

这里写图片描述

freemarker文件级别

这里写图片描述

service级别

这里写图片描述

好了,权限部分暂且就说这些。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值