Welcome to

Mr.Xiong

Home / ThinkPHP / TP3.2.3之auth权限管理

TP3.2.3之auth权限管理

http://document.thinkphp.cn/manual_3_2.html#preface

官方手册:

http://document.thinkphp.cn/manual_3_2.html#entrance_file

一、加载拓展配置

在配置文件中增加如下:

//加载拓展配置文件(多个文件用逗号分隔)

'LOAD_EXT_CONFIG' => 'user,pay',

例如user.php中的配置参数如下:

<?php
      //用户配置文件
      return array(
            'USER_TYPE'=>2,
      )
?>

那么,最终获取用户参数的方式是:

C(‘USER_TYPE’);

二、auth权限认证

1.TP框架中已经内置了auth权限类,该类位于:

/ThinkPHP/Library/Think/Auth.class.php

2.执行该文件注释的sql语句生成3张表

//数据库
/*
-- ----------------------------
-- think_auth_rule,规则表,
-- id:主键,name:规则唯一标识, title:规则中文名称 status 状态:为1正常,为0禁用,condition:
规则表达式,为空表示存在就验证,不为空表示按照条件验证
-- ----------------------------
 DROP TABLE IF EXISTS `think_auth_rule`;
CREATE TABLE `think_auth_rule` (  
    `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,  
    `name` char(80) NOT NULL DEFAULT '',  
    `title` char(20) NOT NULL DEFAULT '',  
    `type` tinyint(1) NOT NULL DEFAULT '1',    
    `status` tinyint(1) NOT NULL DEFAULT '1',  
    `condition` char(100) NOT NULL DEFAULT '',  # 规则附件条件,满足附加条件的规则,才认为是
有效的规则
    PRIMARY KEY (`id`),  
    UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
-- ----------------------------
-- think_auth_group 用户组表, 
-- id:主键, title:用户组中文名称, rules:用户组拥有的规则id, 多个规则","隔开,status 
状态:为1正常,为0禁用
-- ----------------------------
 DROP TABLE IF EXISTS `think_auth_group`;
CREATE TABLE `think_auth_group` ( 
    `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, 
    `title` char(100) NOT NULL DEFAULT '', 
    `status` tinyint(1) NOT NULL DEFAULT '1', 
    `rules` char(80) NOT NULL DEFAULT '', 
    PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
-- ----------------------------
-- think_auth_group_access 用户组明细表
-- uid:用户id,group_id:用户组id
-- ----------------------------
DROP TABLE IF EXISTS `think_auth_group_access`;
CREATE TABLE `think_auth_group_access` (  
    `uid` mediumint(8) unsigned NOT NULL,  
    `group_id` mediumint(8) unsigned NOT NULL, 
    UNIQUE KEY `uid_group_id` (`uid`,`group_id`),  
    KEY `uid` (`uid`), 
    KEY `group_id` (`group_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 */

三、数据表关系

注:需要一张后台管理员表。如需其他表名,需在配置项中说明。

四、实现权限验证

在后台公共控制器中,进行权限验证。

$auth=new \Think\Auth();//实例化auth类
$rule_name=MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_ NAME;//定义规则
$result=$auth->check($rule_name,$_SESSION['user']['id']);
//检查权限,通过验证返回true;失败返回false
if(!$result){ $this->error('您木有权限访问!!!再点打你丫的~');}

五、后台效果

另外,附上万策智业教学总监李斌的总结:“tp的这个auth,策略设计的不够灵活,只能确定到某个控制器中的操作的执行权限,而不是针对资源,这个用在RestFul api上就不足了;而且每个角色的权限规则的叠加是用逗号分隔的,不算很简洁。”

然后……就没了。

Finally,谢谢大家的阅读!祝每天开心~
版权声明:本文为博主原创文章,未经博主允许不得转载。

赞赏

微信赞赏支付宝赞赏

5 条回应 “TP3.2.3之auth权限管理”
  1. 哈哈 2017年6月19日 on 下午2:44 回复

    后台模板不错

  2. nkvvkyNog 2017年9月1日 on 上午6:29 回复

    3 month payday loans payday loans online no credit check <a href="http://cashadvances2017.com"&gt; payday loans online no credit check</a> payday loans with no bank account payday loans las vegas

  3. nfqlpfNog 2017年9月12日 on 下午9:02 回复

    payday loan near me what is a payday loan <a href="http://paydayloans2017.com"&gt; online payday loans no credit check</a> payday loans online no credit check payday loan no credit check

  4. GypeJereakege 2017年10月1日 on 上午2:39 回复

    hi everyone

Mr.Xiong进行回复 取消回复

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

雄心勃勃但谦卑温逊!

>> <<