ThinkPHP的RBAC网上很多相关内容.但是很多像是洪七公教杨过打狗棒法一样.只是告诉"孩子,记住我的招式,原理爷tm不告诉你",现在一想起来杨过确实聪明过人,打狗棒法或许也不过几个招式.大鸟侠很快就学会了.像哥们这样有姿色没才色的就相当难过了.至少知道大概原理,实行步骤,心里有点谱才好下手.
这里简单的介绍一下TP里RBAC的大致说明.再结合一下其他大仙的技术博博.相信一定能对大家有所帮助.
RBAC
作用:控制用户(是/否)能访问(模块/操作)
原理:把允许访问的模块/操作写到SESSION中(RBAC类自动执行),RBAC自动验证(不允许执行的模块/操作,用户可定义如何操作)
操作步骤:
0,前提:把保存允许访问模块/操作的数据库创建好.这里TP已经准备好了,在RBAC的类中,(四个表,详细说明见各路大仙博博),注意:
a.创建好表.自己可以手动输入模块/操作到数据库中进行测试,不必先制作繁琐的后台增删改查操作,影响学习积极性.
b.模块/操作大小写,
c.写入允许访问操作,先允许当前操作的模块,允许模块先允许项目.树形结构,允许访问的模块到项目这一支应该是全允许的.
d.没写入的模块不允许访问 = = 写入的才允许访问
1,修改rbac配置到配置文件(比如是否开启rbac. rbac的认证是实时的还是注销重新登录以后生效的. 等等等等)
2,写入代码到登录验证中,这里RBAC类可以做两个事情:
a.登录验证. RBAC::authenticate();
b,登录成功后,把允许访问的模块/操作写入session RBAC::saveAccessList(); 到这里可以查看session中允许的模块/操作,实时验证是看不到的
3,写入代码到所有Action的父Action中, 还是两件事情:
a,判断session中是否存在Rbac(SESSION中不存在自己定义操作,一般跳转到登录页面),
b,定义访问禁止的模块和操作时需要的操作(比如没有权限的提示页面)
4,完了(我靠,这就完了),对,这tm就完了.
这就实现了RBAC的基本验证功能.