Thinkphp中RBAC的权限控制之配置文件(RBAC详解之连载2)

来源:互联网 发布:广州网签数据统计 编辑:程序博客网 时间:2024/05/17 08:46

 转载请注明来源:李文凯

 

上期我们讲了数据库的结构,THINKPHPRBAC难点就在于权限控制。

我们现在将建好的结构截图给大家看一下:

Role

User

Role_user

Node

Access

 

记得我们之前将ThinkPHP的带演示的Full包下载到本地,并且让大家解压到www根目录下。

我们现在来看一下截图,并且在根目录下面建立一个ThinkPHP的入口文件。

文件容及截图如下:

 

 

 

<?php

// 定义ThinkPHP框架路径

define('THINK_PATH', './ThinkPHP');

//定义项目名称和路径

define('APP_NAME', 'Rbac');

//定义项目文件在当前目录下生成对应的项目文件

define('APP_PATH', '.');

// 加载框架入口文件

require(THINK_PATH."/ThinkPHP.php");

//实例化一个网站应用实例

App::run();

?>

我们现在进入http://127.0.0.1/rbac/index.php运行一次。如出现以下界面就说明入口文件创建成功,可以接下来进行下一步操作了:

运行完成之后,我们查看文件夹截图,看到的效果应该是这样的:

我们再建一个的基准类,基准类继承Action类,后台的所有模块均继承该类。有权限和无权限用户进行的所有的操作,对项目和项目对应的模块,动作进行访问操作时,都需要经过基准类加载和验证用户的权限列表。查看该用户是否有该项目,模块和动作的权限。我们将该文件命名为: /BaseAction.class.php,根据我本地的站点目录布署情况,我将该文件放在生成出的项目文件中Lib/Action/BaseAction.class.php(注:根据自己布署的站点文件和项目文件特点行放置,但一点要放在项目的Lib/Action/)。暂时我们只写其中的一部份。代码如下:

<?php

/*

*李文凯

*/

class BaseAction extends Action {

         function _initialize() {

        

         }

}

 

?>

 

我们再新建一个演示用的操作模块UserAction.class.php,该文件也需要放置在Lib/Action文件夹下,内容如下:

<?php

/*

*李文凯

*/

  class UserAction extends BaseAction{

         function index(){

                //仅用来测试使用,未完善功能,如有权限则会打印出“用户列表”,否则会提示用户没有权限操作

                echo '用户列表';

         }

         function edit(){

                //仅用来测试使用,未完善功能,如有权限则会打印出“编辑用户”,否则会提示用户没有权限操作

                echo '编辑用户';

         }

         function update(){

                //仅用来测试使用,未完善功能,如有权限则会打印出“更新用户”,否则会提示用户没有权限操作

                echo '更新用户';

         }

         function delete(){

                //仅用来测试使用,未完善功能,如有权限则会打印出“删除用户”,否则会提示用户没有权限操作

                echo '删除用户';

         }

         function insert(){

                //仅用来测试使用,未完善功能,如有权限则会打印出“添加用户”,否则会提示用户没有权限操作

                echo '添加用户';

         }

  }

?>

接下来的这一步,我们将配置文件写完,配置文件一块是连接数据库的,一块是启用RBAC模块的配置文件,我会在配置文件中,每一块都进行详细的注释,希望大家看清楚,并且这个配置文件不需要去记忆,可以从Example下面的/Rbac/Conf路径下查看,复制即可。但一定要清楚,每一个配置的功能:

<?php

/*

*李文凯

*/

return array(

  // 如果你的环境不支持PATHINFO 请设置为3,如果发现路径不能使用或有问题请改为3

    'URL_MODEL'=>1,

    //说明你使用的数据库的类型

  'DB_TYPE'=>'mysql',

  //与明你使用的数据库服务器的地址,按照自己本身的具体情况来写该地址

  'DB_HOST'=>'localhost',

  //RBAC相关数据表所在的数据库的名字,根据自身实际情况填写

  'DB_NAME'=>'rbac',

  //能管理该库的mysql帐号,根据自身实际情况填写

  'DB_USER'=>'root',

  //对应帐号的密码,根据自身实际情况填写

  'DB_PWD'=>'liwenkaihaha',

  //对应mysql或其他数据库的端口,根据自身实际情阅填写

  'DB_PORT'=>'3306',

  //对应数据库的表前缀,根据自身实际情阅填写

  'DB_PREFIX'=>'think_',

 

  //下面一部份是RBAC的配置文件

  //USER_AUTH_ONtrue的话,就意味着开启RBAC

  'USER_AUTH_ON'=>true,

  //USER_AUTH_TYPE代表ThinkPHP 权限的两种认证方式。

  //2即时模式是指即时修改用户权限即时生效

  //1即时修改权限,修改完成后用户仍在系统中的话不生效。下次登陆时才会生效

  'USER_AUTH_TYPE'                 =>1,              // 默认认证类型 1 登录认证 2 实时认证

  //用来标识用户Session的标志号,字符串类型随意填写即可

  'USER_AUTH_KEY'                   =>'authId',     // 用户认证SESSION标记

  //用来标识管理员的标识好,这一处非常有用。

  //我们在以后可以做一条判断,判断该如户如果是创始人,则激活这一项。避免管理员操作错权限后没办法进行登陆

  //整个系统中的权限控制体系对该标识的用户无效

    'ADMIN_AUTH_KEY'                  =>'administrator',

    //对应的数据库中的用户表

  'USER_AUTH_MODEL'             =>'User',       // 默认验证数据表模型

  'AUTH_PWD_ENCODER'          =>'md5', // 用户认证密码加密方式

  //USER_AUTH_GATEWAY该项说白了就是告诉用户登陆的入口

  'USER_AUTH_GATEWAY'  =>'/Public/login',  // 默认认证网关

  //NOT_AUTH_MODULE,该项的意思为不需要验证的模块。public也会继承BaseAction基准类

  //如果,没有这一项,用户访问公共的登陆模块时,都会提示没有权限

  'NOT_AUTH_MODULE'             =>'Public',            // 默认无需认证模块

  //必须要验证的模块,例如财务模块,支付管理模块等

  'REQUIRE_AUTH_MODULE'=>'',            // 默认需要认证模块

  'NOT_AUTH_ACTION'        =>'',        // 默认无需认证操作

  'REQUIRE_AUTH_ACTION'=>'',              // 默认需要认证操作

  //该项开启,就意味着整个网站中会加入未登陆用户的权限判断。例如,论坛开启游客发贴,游客就可以进行发贴操作

    'GUEST_AUTH_ON'          => false,    // 是否开启游客授权访问

    'GUEST_AUTH_ID'           =>    0,     // 游客的用户ID

    //产生关联的用户组表,前面必须要写对应的表前缀,详情请参照前面的数据表说明

  'RBAC_ROLE_TABLE'=>'think_role',

  //用户与组产生关系的关联表,详情请参照前面的数据表说明,前面必须要写对应的表前缀

  'RBAC_USER_TABLE'       =>   'think_role_user',

  //权限列表,存在该表中的组和节点的对应关系表。详情请参照前面的数据表说明,前面必须要写对应的表前缀

  'RBAC_ACCESS_TABLE' =>     'think_access',

  //节点表,说明各项目,模块和动作的关系。详情请参照前面的数据表说明,前面必须要写对应的表前缀

  'RBAC_NODE_TABLE'       => 'think_node',

);

?>

如果大家以后记不住,可以直接使用这个配置文件。

原创粉丝点击