设计一个灵活、通用、方便的权限管理系统校验方法

设计一个灵活、通用、方便的权限管理系统校验方法

设计灵活、通用、便捷的权限管理系统。

在这个系统中,我们需要控制系统所有资源的权限,那么系统中有哪些资源呢?我们可以简单地将这些资源概括为静态资源(函数操作、数据列)和动态资源(数据),也称为对象资源和数据资源,后者就是我们在系统设计和实现中所说的。

系统的目标是控制应用系统所有对象资源和数据资源的权限,如应用系统的功能菜单、各界面的按钮、数据展示的列、各种行级数据来控制权限。

一、RBAC权限分配

RABC:基于角色的访问控制(Role-Based Access Control)

一般在登录系统认证通过后,会先判断用户的操作权限,判断用户后续操作是否合法!

RABC至少需要三张表:用户表-角色表-权限表(多对多关系比较合理)

User表:用于存储用户名和密码rbac角色权限表设计,进行登录验证,重写User表,使用django内置的auth认证系统,或者自定义;

角色表:分配用户角色,

权限表:存储所有需要分配权限的url请求路径

路由资源(可能对应后端路由的名称,通过名称name可以解析出对应的路由)请求方法说明

得到

判断用户是否可以查询books表中的数据

邮政

判断用户是否可以在books表中添加数据

判断用户是否可以更新books表中的数据

删除

判断用户是否可以删除books表中的数据

RBAC权限分配操作流程:

用户登录3D交通工具,通过用户表验证用户名和密码

登录成功,记录用户登录状态rbac角色权限表设计开发学习,查询(通过用户关联权限表)记录当前用户的权限(可以记录在django的session表中)

访问鉴权,预先验证每个URL请求的登录状态和权限(可以放在中间件的process_request中,注意设置对应的发布白名单)

后端如何判断用户权限