【文】关于用户权限管控的方案设计

MedusaSorcerer的博客


关于很多的 WEB 项目都有用户登录作为入口的,

所以在项目中拥有一个完善的用户权限管控的设计方式,

很重要,

特别是在一些安全平台上,

绝不给你越界的权限。

如一般的设计方式:

利用管理员的权限管理所有普通用户,

这种方式虽然可达到到权限管控的目的,

但是管控范围太过广泛,

细化是这次需要讲述到的,

明确每个管理者被分配的权限。

范围管辖式权限管控

不要纠结这个名字,

这个命名我也是灵光一闪命名的,

意思就是

利用划分不同范围,

管理人员可管理范围内的用户,

最终管理者可管理所有范围内的用户,

范围内管理者不可逾越该范围而管理其他用户。

示意图如下:

在分配权限时,

权限受益者是用户,

例如:用户 A 分配的权限是管理员,

用户 A 所在的用户组:group-A,

那么用户 A 将可以管理所有在group-A的用户,

这种方式类似于部门经理管理部门内员工,

总经理管理所有部门一样,

当然你也需要注意,

在授权的时候明确授权者和被授权级别的关系,

如管理员不能授予用户系统管理员的权限。

人员架构图如下:

不同颜色之间相互独立。

分组授权权限管控

不得不说命名才是最困难的,

这个意思是

根据权限表,

你可以自定义权限组,

将用户添加至组内,

用户将会享受组带来的权限支持。示意图如下:

在这种设计方案中,

收益的是用户组,

而最终受益是用户组内的用户,

他们享受组所定义的权限。

那不同的设计就会有不同的方案,

最主要的区别在于你怎么设计和规划你的权限枚举表,

如按照界面来分配,

按照功能块来分配,

或者其他。

我们简单的按照界面来分配,

这种方式就是我给你这个界面的权限,

你就可以使用这个界面上的所有功能,

具体不做详细赘述。

如你定义了一条权限数据,

数据内容是所有的权限都可以使用,

并命名为最终管理员组,

此时你创建了一个用户 B,

并添加到了这个组内,

此时用户 B就是一个带有所有权限的用户,

针对不同工作性质,

不同级别,

你可以指定很多组,

并将指定用户添加进去。

再细化

那么再对上面的细化就是请求方法了,

当然,

我们不叫请求方法,

二十具体功能,

如同一个界面,

有查阅/更新/修改/删除等功能,

你可以根据这类具体的操作(功能),

再来细化你的权限管控,

但是在你设计模型的时候,

很可能会绕在里面出不来,

稍微有点小小的复杂,

后面有可能的话,

作者会实现一套 Django 模型,

也便于以后自己使用,

细化的目的是为了权限具体,

当然也要考虑实际情况,

如一些应用不需要这样复杂的管理方式,

就需要一个用户和管理者即可,

再有就是你对一个请求的用户,

进行权限校验的复杂程度,

也关系到项目的响应快慢,

效率问题,

所以细化不是越细化越好,

而是在需求上达到目的即可。



码字不易, 点个赞吧~

今天你进步了吗?

以上是 【文】关于用户权限管控的方案设计 的全部内容, 来源链接: utcz.com/a/26303.html

回到顶部