【文】关于用户权限管控的方案设计
关于很多的 WEB 项目都有用户登录作为入口的,
所以在项目中拥有一个完善的用户权限管控的设计方式,
很重要,
特别是在一些安全平台上,
绝不给你越界的权限。
如一般的设计方式:
利用管理员的权限管理所有普通用户,
这种方式虽然可达到到权限管控的目的,
但是管控范围太过广泛,
细化是这次需要讲述到的,
明确每个管理者被分配的权限。
范围管辖式权限管控
不要纠结这个名字,
这个命名我也是灵光一闪命名的,
意思就是
利用划分不同范围,
管理人员可管理范围内的用户,
最终管理者可管理所有范围内的用户,
范围内管理者不可逾越该范围而管理其他用户。
示意图如下:
在分配权限时,
权限受益者是用户,
例如:用户 A 分配的权限是管理员
,
用户 A 所在的用户组:group-A
,
那么用户 A 将可以管理所有在group-A
的用户,
这种方式类似于部门经理管理部门内员工,
总经理管理所有部门一样,
当然你也需要注意,
在授权的时候明确授权者和被授权级别的关系,
如管理员不能授予用户系统管理员的权限。
人员架构图如下:
不同颜色之间相互独立。
分组授权权限管控
不得不说命名才是最困难的,
这个意思是
根据权限表,
你可以自定义权限组,
将用户添加至组内,
用户将会享受组带来的权限支持。示意图如下:
在这种设计方案中,
收益的是用户组,
而最终受益是用户组内的用户,
他们享受组所定义的权限。
那不同的设计就会有不同的方案,
最主要的区别在于你怎么设计和规划你的权限枚举表,
如按照界面来分配,
按照功能块来分配,
或者其他。
我们简单的按照界面来分配,
这种方式就是我给你这个界面的权限,
你就可以使用这个界面上的所有功能,
具体不做详细赘述。
如你定义了一条权限数据,
数据内容是所有的权限都可以使用,
并命名为最终管理员组
,
此时你创建了一个用户 B,
并添加到了这个组内,
此时用户 B就是一个带有所有权限的用户,
针对不同工作性质,
不同级别,
你可以指定很多组,
并将指定用户添加进去。
再细化
那么再对上面的细化就是请求方法了,
当然,
我们不叫请求方法,
二十具体功能,
如同一个界面,
有查阅/更新/修改/删除等功能,
你可以根据这类具体的操作(功能),
再来细化你的权限管控,
但是在你设计模型的时候,
很可能会绕在里面出不来,
稍微有点小小的复杂,
后面有可能的话,
作者会实现一套 Django 模型,
也便于以后自己使用,
细化的目的是为了权限具体,
当然也要考虑实际情况,
如一些应用不需要这样复杂的管理方式,
就需要一个用户和管理者即可,
再有就是你对一个请求的用户,
进行权限校验的复杂程度,
也关系到项目的响应快慢,
效率问题,
所以细化不是越细化越好,
而是在需求上达到目的即可。
码字不易, 点个赞吧~
今天你进步了吗?
以上是 【文】关于用户权限管控的方案设计 的全部内容, 来源链接: utcz.com/a/26303.html