auth权限认证详细讲解

这篇博客详细讲解了ThinkPHP5中的Auth权限认证机制,包括四张表的结构关系,规则表中的字段设计,以及如何实现权限验证。通过模块名/控制器名/方法名来定义认证规则,并介绍了如何使用Auth类的check方法进行权限检查。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值