auth权限认证详细讲解
一、总结
一句话总结:四表两组关系,一个多对多(权限和用户组之间)(多对多需要3个表),一个一对多(用户和用户组之间)
1、实际上使用Auth是需要4张表的(1.会员表 2.认证规则表 3.认证组表 4.认证中间表),这四张表间的图像化关系是怎样的?
给用户组制定访问规则
会员表(用户表)---->用户组表<---->认证规则表(规则表)
认证中间表(规则用户组表)
2、规则表中控制规则的字段用什么好?
模块名/控制器名/方法名
【模块名/控制器名/方法名】或【自定义规则】 字符串类型 这里大家最好按照 模块名/控制器/方法
3、auth权限验证的表是给你写好的,验证的表的类是否给你写好了?
官方有的:基于thinkphp5的auth权限认证扩展 - ThinkPHP框架
http://www.thinkphp.cn/extend/873.html
其实就算官方没有给写好,自己来写其实也是非常简单的
不过官方应该是写好的,写好的话省点事,如此而已
4、auth权限验证中的验证是如何实现的?
Auth类 check方法
在验证的时候可以用 MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME 来自动获取当前的 模块名称/控制器名称/方法名称例如:
$auth->check( MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME, 1 ) );
二、一个小白对auth的理解(转)
转自:忘记转过来的地址了,抱歉抱歉
---恢复内容开始---
PS:最近需要做一个验证用户权限的功能,在官方和百度看了下,发现大家都是用auth来做验证,官方有很多auth的使用教程,但是都不全面,我也提问了几个关于auth的问题 也没人来回答我,无奈只好一步步看代码研究了。本人基础不好,属于半路出家的那种,希望我的教程大家不要见笑。 新手纯属无奈之举。。。
废话不多开始解密:
首先说下我使用的Thinkphp版本:ThinkPHP3.2.3完整版
auth 翻译成中文就是认证的意思。
TP的auth类 核心版 是没有的。完整版才有,这点大家要注意下!
1:首先打开Auth.class.php
文件位置 Thinkphp/Library/Think/Auth.class.php
2:打开Auth类文件之后我们要建Auth认证所需要的3张表了,Auth类中已经给了表所用的字段了 直接复制回来粘贴到 phpmyadmin中运行sql就可以;
Auth所用的张表如下:
//数据库 /* -- ---------------------------- -- 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 EXI