thinphp中auth认证方法使用
一、获取Auth类
1、ThinkPHP3.1.3完整版:http://www.thinkphp.cn/down/338.html
2、OneThink1.0正式版:https://github.com/liu21st/onethink
二、建立需要的数据表
打开Auth.class.php,将其中有关数据库的注释部分复制后,
到phpmyadmin中执行,
可得到三个表:think_auth_rule、think_auth_group、think_auth_group_access,
并按实际情况修改前缀。
实际上,这三个表的名称不是规定死的,可通过配置来进行更改,
如何更改,请看本文后面使用心得部分。
注意:OneThink附带和3.1.3中附带的的auth_rule表稍有不同(不影响使用的改变)。
三、建立用户表
要有自增id,其他随意。
四、添加认证规则
数据表:think_auth_rule
其中name是最重要的字段:分组/控制器/方法(3.1.3)模块/控制器/方法(3.2)。
顺序不能改变,大小写随意。Auth类中会统一转成小写。
不过,haran建议还是和项目中的命名规范统一。
其次是type。一般情况下设定为1。
(最后存入用户权限的就是type为1的规则)
五、添加用户组(角色)
数据表:think_auth_group
其中rules字段最为重要,就是控制哪个组有哪些权限。
六、添加用户和组对应关系
此表实际上就是member和auth_group的中间表,
规定哪个用户(uid)属于哪个组(group_id)
七、新建基础控制器并写入初始化方法
3.1.3
在项目的Lib/Action中新建CommonAction.class.php
- <?php
- class CommonAction extends Action{
- public function _initialize(){
- //类库位置应该位于ThinkPHP\Extend\Library\ORG\Util\
- import('ORG.Util.Auth');//加载类库
- $auth=new Auth();
- if(!$auth->check(GROUP_NAME . '/' . MODULE_NAME.'/'.ACTION_NAME,session('uid'))){
- $this->error('你没有权限');
- }
- }
- }
在Application/Common/Controller中新建CommonController.class.php
- <?php
- namespace Common\Controller;
- use Think\Controller;
- class CommonController extends Controller {
- public function _initialize () {
- $AUTH = new \Think\Auth();
- //类库位置应该位于ThinkPHP\Library\Think\
- if(!$AUTH->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME, session('uid'))){
- $this->error('没有权限');
- }
- }
- }
八、新建后台首页
- <?php
- class IndexAction extends CommonAction {
- public function index () {
- echo '后台首页';
- }
- }
- <?php
- namespace Admin\Controller;
- use Common\Controller\CommonController;
- class IndexController extends CommonController {
- public function index () {
- echo '后台首页';
- }
- }
注意命名应和auth_rule表中的name完全对应。
使用心得:
一、使用Auth认证,只要表命名正确,甚至不必在config.php中定义任何一项即可使用。
二、如何进行自定义?
在项目的配置文件中定义:
- //Auth权限设置
- 'AUTH_CONFIG' => array(
- 'AUTH_ON' => true, // 认证开关
- 'AUTH_TYPE' => 1, // 认证方式,1为实时认证;2为登录认证。
- 'AUTH_GROUP' => 'auth_group', // 用户组数据表名
- 'AUTH_GROUP_ACCESS' => 'auth_group_access', // 用户-用户组关系表
- 'AUTH_RULE' => 'auth_rule', // 权限规则表
- 'AUTH_USER' => 'member', // 用户信息表
- ),
其中AUTH_TYPE设为2后,在SESSION中就会有类似数组
- [_AUTH_LIST_31] => Array
- (
- [0] => admin/index/index
- [1] => admin/base/index
- [2] => admin/rbac/role
- [3] => admin/rbac/member
- [4] => admin/rbac/node
- )
改变以上的'AUTH_GROUP','AUTH_GROUP_ACCESS','AUTH_RULE','AUTH_USER'配置项,即可自定义Auth认证所需四张表,但注意加上表前缀。
最新文章
- 隔壁信概大作业xjb写——同化棋ATAXX
- TFS Workspace 更改电脑名称
- 谷歌 火狐 CSS兼容
- 贪心 Codeforces Round #301 (Div. 2) B. School Marks
- log4j.properties配置文件
- Android 内核初识(8)Binder
- perl unload gbk oracle 数据库
- CentOS、Ubuntu、Debian三个linux比较异同
- PHP自练项目之数字分页效果
- php+ajax+jq
- Protobuf动态解析在Java中的应用 包含例子程序
- Thread.interrupt()方法理解
- Python Opencv安装环境搭建
- setTimeout与Promise的区别
- Cglib动态代理实现方式
- java实现数据缓存
- Gradle自动实现Android组件化模块构建
- HDU4685 Prince and Princess【强连通】
- AJPFX:外汇的爆仓和追加保证金
- SGU 223 little kings BSOJ2772 状压DP
热门文章
- Java并发编程原理与实战四十:JDK8新增LongAdder详解
- jdk1.8.0_45源码解读——LinkedList的实现
- C语言入门教程-(3)基本数据类型
- 网络流建图(典型)(EK)
- 20155303 2016-2017-2 《Java程序设计》第九周学习总结
- Hibernate5笔记3--详解Hibernate的API
- AS中一些不经常用到的快捷键
- sicily 1459. The Dragon of Loowater
- React-Native 之 FlexBox介绍和使用
- 打造 Laravel 优美架构 谈可维护性与弹性设计