权限管理的思考

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 代表所有注册(在数据库中有记录的)用户

维护网站需要一定的开销,如果您认可这篇文章,烦请关闭广告屏蔽器浏览一下广告,谢谢!
加载中...

(。・∀・)ノ゙嗨,欢迎来到 lookas 的小站!

这里是 lookas 记录一些事情的地方,可能不时会有 lookas 的一些神奇的脑洞或是一些不靠谱的想法。

总之多来看看啦。