代码改变世界

TP的RBAC(一)

2011-05-07 15:41  卫佳  阅读(381)  评论(0编辑  收藏  举报

提到ThinkPHP,许多人都会为它的高效,方便所折服。但与很多学员交流后,发现大家普遍对其的RBAC权限控制感到头疼不已。那么今天就给大家带来关于这方面的教程,相信大家再看完这篇文章后,一定会对RBAC有一个清晰的了解。并且以后关于这个框架的权限控制也会信手拈来,轻松驾驭。

RBAC许多人听到后会觉得很头疼,不知道这是什么东西。用英文来讲的话就是Role-Based Access Control,用中文来说就是——基于角色的权限访问控制。呵呵,是不是听的头晕了?没那么复杂。你只需要了解一点,它是来控制用户组权限的就得了,有的用户组用户可以被添加,但是有的用户组用户却不可以,就是这样一个简单的东西。如果再搞得大家头晕一点的话,他还包括类似于安全拦截器,认证管理器...等等概念咯。我觉得如果仅仅是要使用的话,这些东西在最开始的时候其实没必要了解。只要清楚,怎么用的,以后对于这些概念即可以一看就懂,一用就通。

大家在电影当中看到过一种场景吗?——需要两个人的密码卡,指纹和眼球扫描才能够打开金库。

或者说是在现实生活中:一个营业员能进行一些基本操作,但是输入错误或者一些特殊情况下,会叫经理来刷一下卡什么的,这主要是因为营业员的权限不够。这个时候,他们的经理就会拿着自己的卡过来,然后来提升一下权限,该营业员就能够进行该项操作了。

类似于这样一种两个身份认证才能进行操作的功能,目前在ThinkPHP2.0的版本中,还不能实现。如果想使用这样的功能,只有大家自己写一个操作类或者是在ThinkPHP进行修改或者扩展了。

废话不多说,我们先去下载一个ThinkPHP的框架(注:在1.5版本以后ThinkPHP关于RBAC等扩展类就不包含在核心包当中了,如果大家要下载的话可以去下载最新的ThinkPHP2.0带扩展、示例和文档完整包)。下载地址如下:http://www.thinkphp.cn/Down/wedding veil(别下成核心包了哦!)

下载解压完成,将其放入我们的根目录或者子目录下。

我们先跳过去这一段,讲一个权限化分中最重要,大家最容易弄混的地方,就是RBAC需要用到的表和字段。我们先来了解一下RBAC需要用到的数据表。将建立一个五张表,这五张表分别是:

  1. 用户表(包含三个字段用户编号,用户名和用户密码)
  2. 用户组表(用户组编号和名字)
  3. 用户与组的对应关系表(组编号和用户编号)
  4. 节点表(节点编号,名字,注释,父路径编号,等级)(注:这个表很容易将人搞晕)
  5. 权限表(组编号,节点编号,父路径编号,等级)

以下五个表,我现在写好演示用的SQL执行语句帮助大家建表,大家在实验建表的过程中只需要复制使用下面的SQL语句即可: