thinkphp rbac如何给多个实例授权

qingchoulove 发布于 2015/07/02 16:47
阅读 227
收藏 0
我现在在做一个微信公众号的管理后台,每个微信号下有许多相同的操作,本来单个公众号的时候没有问题,现在要接入多个微信号。还要进行权限控制,比如 给A授权公众号1的全部权限, 给b授权公众号2的部分权限。 只有一个公众号的时候可以直接把权限设到action上,但多个公众号要怎么处理?
加载中
0
不是simaguo
不是simaguo

1个用户表user,1个用户组表group,一个用户与用户组的中间表user_group,来管理用户属于哪个用户组,可以多对多。

在一个节点表node,节点表其实就是保存module(爷节点(前台、后台、论坛等) )、Controler(模块下的控制器,父节点)和Action(子节点),就想当于保存了url,

在来个节点表和用户组表的中间表node_group,其维护着哪些组可以访问哪些url。

A、B相当于用户表,

uid     user

 1        A    

2        B

公众号1和公众号2就是用户组

groupid     groupname

1        公众号1  

2        公众号2      

A属于公众号1,B属于公众号2,就是urse_group表

userid    groupid

1        1

2        2

权限就相当于节点

nodeid  module   name parentid

1   Admin     后台    0

2   Home     前台    0

3   User    用户管理       1    

4    index   首页    3

5    add    添加用户    3

6     delete 删除用户     3

.

.

.


有哪些个权限就相当于检查node_group中有木有该用户组与该节点的一一对应。

groupid nodeid

1        1

1        3

1        4

2        1

2        3

2        5

所以A用户能查看后台用户管理的首页(即能访问/Admin/User/index),但不能做其他操作,B用户可以添加用户(即访问/Admin/User/index),但他看不到用户管理的首页及其它。

原理大致如此。

qingchoulove
qingchoulove
回复 @simaguo : 你可能还是没有理解我的意思,公众号是派生出来的实例,是操作的合集。类似于一个部门的模型:我可以依照模型创建许多实例,但rbac的权限是在模型上的,怎么给不同的实例编写权限。
不是simaguo
不是simaguo
回复 @qingchoulove : urse_group表区分,在上面的例子中,用户A操作,那他就拥有公众号1的权限,用户B操作,那他就拥有公众号2的权限。其实应该用公众号1、公众号2当做用户,用户普通版、VIP版、企业版等做用户组,然后设置不同版的权限。
qingchoulove
qingchoulove
这样的话,这是把公众号分成了组,但在操作action时无法区分是哪一个公众号
0
ahkxhyl
ahkxhyl
关注下~
返回顶部
顶部