假设在库存管理系统中,一些管理员可以对库存进行增删改查,一些管理员只能查看。我们可以建立一个权限表和一个用户表,让用户ID与操作权限一一对应。比如用户A可以删除,用户A可以修改…这样一来,用户ID与权限是一个1对多的关系。此时如果涉及到的用户操作权限过多的问题,比如我们常见的系统中,菜单分为多级,那么多级菜单间的权限设定就要频繁的操作权限表。并且,权限的下放和权限的回收都要格外的谨慎,以防止用户权限被漏掉。这种用户信息与权限信息1对多且强耦合的表设计是不成功的。
用以下方式来优化上述问题。
- 权限串
用字符串或数字bit来表示权限信息,一个用户对应一个权限串。
(通过这种操作,可以将用户ID与权限信息做到1对1的关系) - RBAC
RBAC(Role-Based Access Controll)基于角色的权限访问控制。
三个概念:
用户(User):一个用户可以拥有若干个角色
角色(Role):一个角色可以拥有若干个权限
权限(Permission):落实到具体操作行为(查看,删除,修改,添加)
用角色将用户与权限进行解耦,让一个角色对应一组权限。让一个用户对应一组角色。此时用户直接对应的是角色ID,远比用户直接对应权限要轻松的多。
用鼠标写字儿有些麻烦,各位多多包含。