权限管理的思考
2017-07-04
最近在想如何设计五的网的权限系统,强迫症的我,找了半天,终于找到了一个好的办法。
本文迁移自吾得,原始链接为 https://wudew.com/posts/70
以下的权限管理模型是基于RBAC的一个拓展,可以对任意一个资源进行授权。
首先,就是用户表,五的网一定是有一个用户表的
users
id username …
然后就是,为了让用户可以分类(便于管理),设置一个用户组表
groups
id name …
然后,为了让用户可以跟用户组有关联,设置一个用户-用户组关联表
group_user
group_id user_id
(其实,有必要设置一个用户组表吗)
然后,就是权限表了
permissions
id permissions_type permissions_id action entity_type entity_id
示例
设置一条id为1(仅供索引)的权限,内容为用户3可以编辑评论2的内容
1 Comment 2 edit User 3
设置一条id为2的权限,内容为所有用户(id为0代表所有用户,-1代表匿名用户,这两个用户在数据库中没有记录,仅供标识)可以创建评论(id为0代表没有指定是哪个评论,即使不是0,系统也会忽略这一条的)
2 Comment 0 create User 0
补充:
-1 代表匿名用户
0 代表所有注册(在数据库中有记录的)用户