天天看点

基于角色的用户权限控制系统实现(rbac)

上一篇关于rbac的文章中,我简单介绍了实现rbac的理论思路。在本篇文章中,我将分析详细的将思考过程

1、数据库设计

在一个系统中,权限可以看做是原子操作,对于每一种角色,定义为权限集合,角色与权限的关系为多对多关系,用户与角色也是多对多的关系。从这个角度来看,我们实现权限管理系统,至少需要三个表,用户表,角色表和权限表。而用户与角色、角色与权限的关联关系的存储可以有多种实现方案。例如:可以在用户表里面添加一个字段,以点分字符串的形式存储当前这个用户拥有的角色列表,同理,角色表也可以添加一个字段,以点分字符串的形式存储当前角色拥有的操作权限。或者我们可以建立两个关系表,分别表示用户-角色关系和角色-权限关系。本例以点分字符串的形式来存储关联关系。所以只涉及到三个表:users/roles/resources。

2、原理设计