简单RABC的设计与实现

一、RABC的思想

RBAC (Role-Based Access Control) 是基于角色的访问控制。在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。

实际操作起来就是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。

这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理。这种“权限赋予给角色,把角色又赋予用户”的权限设计既清晰,又易管理。

二、数据表设计

RBAC模型中的权限是由模块和行为合并在一起而产生的,在MySQL中,有模块表(lk_module)行为表(lk_action),这两张表的记录合并在一起就行程了权限记录,保存在权限表(lk_permission)中。
在这里插入图片描述
权限与角色的映射关系保存在角色表(lk_role)中,并且权限permission字段采用JSON格式。

在这里插入图片描述

三、人员授权

基于第二部分中的数据表设计,对人员的授权其实是为人员赋予对应的角色。只需要在人员表中增加一列role,用于存储该用户拥有的角色。

查询用户的权限,则可以简单通过表拼接来实现。

SELECT *
FROM tb_user u
JOIN tb_role r ON JSON_CONTAINS(u.role, CAST(r.id AS CHAR))
JOIN tb_permission p ON JSON_CONTAINS(r.permissions, CAST(p.id AS CHAR))
WHERE u.id = 4 AND u.status = 1;

这样,就把人员与直接的权限解耦了,针对具有相同权限的同一批人可以快速管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值