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