RBAC权限模型
一个用户可以访问n个菜单,一个菜单可以属于n个用户——很典型的 n:n的关系,如果直接控制数据库无非就是 简历一个 user-menu表 用来体现 n:n 的关系。role1会有menu1、menu2权限,那么role就会和menu表集成 role_menu权限表给默认的role赋值权限。如果这个情况下对每个用户访问,都需要加入一定权限,同时这个是菜单的权限,如果是数据的权限呢?几乎是最常用的权限
1. RBAC权限模型
几乎是最常用的权限模型了,个人开发者/小公司的从0-1搭建一个项目,这个权限模型几乎是属于必学的知识了
RBAC是什么?
Role-Based Access Control 角色访问控制
从定义也不难看出RBAC最重要的便是 Role
提出一个问题
我希望一个用户 User 对某个 菜单 有访问权限——怎么做?
场景抽象出来无非就是
一个用户可以访问n个菜单,一个菜单可以属于n个用户——很典型的 n:n的关系,如果直接控制数据库无非就是 简历一个 user-menu表 用来体现 n:n 的关系
但是真的好吗?我看不然
如果这个情况下对每个用户访问,都需要加入一定权限,同时这个是菜单的权限,如果是数据的权限呢?场景就复杂了
于是RBAC自然引入
基于角色Role的权限控制,能够使得整个权限管理更加清晰
比如我需要 菜单权限、数据权限在RBAC下 Role —— role1
role1会有menu1、menu2权限,那么role就会和menu表集成 role_menu权限表给默认的role赋值权限
role1 会有data1,data2的数据权限 role和data表构成 role_data数据权限表
最后只需要给 user 构成 user_role 便可以给默认的user赋值
我接下来画图来看看他的优势
无role
有role
可以看到,新角色赋值只需要给Role给user赋值即可
更多推荐



所有评论(0)