
thinkphp 如何写自己的Rbac 35
我想用Rbac做一个后台,不知道应该怎么去改动啊。求高手指点就是后台的框架。Rbac做一个框架,用来做权限处理。但是不知道从哪里下手啊,求高手指点...
我想用Rbac做一个后台,不知道应该怎么去改动啊。求高手指点
就是后台的框架。Rbac做一个框架,用来做权限处理。但是不知道从哪里下手啊,求高手指点 展开
就是后台的框架。Rbac做一个框架,用来做权限处理。但是不知道从哪里下手啊,求高手指点 展开
2个回答
展开全部
哎,就35分,要回答你这个问题的话。。。有点亏了!呵呵。。
下面,我就大致跟你讲一下思路吧!
----------------------------------------------------------------------------------
首先,先说一下怎样实现RBAC的权限过滤。其实说白了就是在我们每次访问Action操作的时候,都问一下,我可不可以操作,如果可以,放行;否则,拦截并给出提示!
那么,我们怎么才能实现在每次访问Action的时候都会先“问”一下的操作呢?并且,这个“问”一定要在所有程序开始执行之前,否则就没有意义了。。。
这样的话,如果实现上述操作,就涉及到了两点:
1、每次问的时候是问谁,怎么问?
2、“问”操作怎么才能在所有程序开始执行前执行?
答:
1、在执行用户登录的时候,登录成功后必须有一个操作是查询该用户能访问的节点(Action),然后把查找到的信息封装到SESSION里,然后每次在执行Action前,都要in_array(问)一下:如果当前访问的节点Action在我的SESSION里,放行;否则,拦截!
2、Tp自带了一个_initialize公共方法,该方法实现了每次在执行Action的时候都要先执行这个方法!我的建议是:先建一个BaseAction类,让这个类继承Tp的Action类,然后后续自己写的每一个类都要继承BaseAction这个类!这样,在BaseAction这个类里边只有声明一个_initialize公共方法,就能做到每次在访问节点之前“问”的操作了!
----------------------------------------------------------------------------------
嗯,思路大概就是个思路,没法再详细了,再详细就得把那5张表搬出来了,要是真搬出来,那就得说到天黑了,呵呵。。。。那5张基本的表(也可以用4张)的关系必须得搞清楚了,否则上边的我等于白说!
----------------------------------------------------------------------------------
涉及到的5张表(或者4张):
管理员User表
管理员角色对应UserRole表(可无)
角色Role表
角色节点对应RoleNode表
节点Node表
如果你连这5张表的关系还没搞明白的话,那我上边的答案等于白写,那么推荐你可以先看一下这个帖子!
http://blog.csdn.net/zhouzhouwu/article/details/6511223
----------------------------------------------------------------------------------
但愿能帮到你!!!
下面,我就大致跟你讲一下思路吧!
----------------------------------------------------------------------------------
首先,先说一下怎样实现RBAC的权限过滤。其实说白了就是在我们每次访问Action操作的时候,都问一下,我可不可以操作,如果可以,放行;否则,拦截并给出提示!
那么,我们怎么才能实现在每次访问Action的时候都会先“问”一下的操作呢?并且,这个“问”一定要在所有程序开始执行之前,否则就没有意义了。。。
这样的话,如果实现上述操作,就涉及到了两点:
1、每次问的时候是问谁,怎么问?
2、“问”操作怎么才能在所有程序开始执行前执行?
答:
1、在执行用户登录的时候,登录成功后必须有一个操作是查询该用户能访问的节点(Action),然后把查找到的信息封装到SESSION里,然后每次在执行Action前,都要in_array(问)一下:如果当前访问的节点Action在我的SESSION里,放行;否则,拦截!
2、Tp自带了一个_initialize公共方法,该方法实现了每次在执行Action的时候都要先执行这个方法!我的建议是:先建一个BaseAction类,让这个类继承Tp的Action类,然后后续自己写的每一个类都要继承BaseAction这个类!这样,在BaseAction这个类里边只有声明一个_initialize公共方法,就能做到每次在访问节点之前“问”的操作了!
----------------------------------------------------------------------------------
嗯,思路大概就是个思路,没法再详细了,再详细就得把那5张表搬出来了,要是真搬出来,那就得说到天黑了,呵呵。。。。那5张基本的表(也可以用4张)的关系必须得搞清楚了,否则上边的我等于白说!
----------------------------------------------------------------------------------
涉及到的5张表(或者4张):
管理员User表
管理员角色对应UserRole表(可无)
角色Role表
角色节点对应RoleNode表
节点Node表
如果你连这5张表的关系还没搞明白的话,那我上边的答案等于白写,那么推荐你可以先看一下这个帖子!
http://blog.csdn.net/zhouzhouwu/article/details/6511223
----------------------------------------------------------------------------------
但愿能帮到你!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询