首页 > 编程知识 正文

rbac权限管理设计 单用户多角色,rbac权限管理设计心得体会

时间:2023-05-04 01:06:31 阅读:203054 作者:2724

设计一个灵活、通用、方便的权限管理系统。
在这个系统中,我们需要对系统的所有资源进行权限控制,那么系统中的资源包括哪些呢?我们可以把这些资源简单概括为静态资源(功能操作、数据列)和动态资源(数据),也分别称为对象资源和数据资源,后者是我们在系统设计与实现中的叫法。

系统的目标就是对应用系统的所有对象资源和数据资源进行权限控制,比如应用系统的功能菜单、各个界面的按钮、数据显示的列以及各种行级数据进行权限的操控。

1,RBAC权限分配

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

一般在登录系统认证通过后,会先确定的该用户的操作权限,判断用户的后续操作是否合法!
RABC至少需要三张表:用户表–角色表–权限表(多对多的关系比较合理)
用户表:用来存储用户名和密码,进行登录校验,可以重写User表,使用django内置的auth认证系统,也可自定义;
角色表:对用户角色进行分配,
权限表:存储所有需要进行权限分配的url请求路径

所有权限的本质是对数据库中表中数据增删改查的操作而这些增删改查的操作是通过前端不同路由,通过get、post、put、delete方法操作数据库的对权限的控制,最简单的方法就是判断当前用户是否可以对指定路由请求操作的权限把角色和这个角色能够访问的 url 和 请求方式进行关联(因为正是的业务逻辑用户权限划分力度可能非常细致)再简单的业务逻辑中这一张表就是权限表 路由 资源(可能对应的是后端路由的 name名称,可以通过name名称解析出对应路由)请求方式说明https://www.shiyanlou.com/v1/books/get判断用户是否可以查询books表中数据https://www.shiyanlou.com/v1/books/post判断用户是否可以添加books表中数据https://www.shiyanlou.com/v1/books/put判断用户是否可以更新books表中数据https://www.shiyanlou.com/v1/books/delete判断用户是否可以删除books表中数据

RBAC权限分配操作过程:
用户登录,通过用户表校验用户名和密码
登录成功,记录用户登录状态,同时查询(通过用户关联的权限表)记录当前用户的权限(可以记录在django的session表)
访问认证,对每个url的请求事先进行登录状态和权限的验证(可以放在中间件的process_request中,注意设置相应的放行白名单)

后端如何判断用户权限

用户发送求方法 https://www.shiyanlou.com/v1/books/ 的url后端首先查询时哪一个用户,然后查询当前用户的角色最后判断这个角色是否可以访问 https://www.shiyanlou.com/v1/books/ 的对应方法即可如果这个角色有权限访问这个url就返回数据,不能访问就返回 401状态码

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。