thinkphp5.0需手动引入或封装auth权限类,核心是正确放置文件(如extend/auth/auth.php)、配置auth.php参数、在base控制器_initialize()中调用check()验证,并创建auth_rule/group/group_access三张数据表。

ThinkPHP5.0本身不内置Auth权限类,需手动引入第三方Auth实现或自行封装。添加自定义Auth类的核心是“放对位置、配好参数、正确调用”,不是简单复制文件就能生效。
1. 放置Auth类文件
将Auth类(如Auth.php)放入extend/auth/目录下(推荐路径),确保命名空间与实际路径一致。例如:
- 文件路径:
extend/auth/Auth.php - 命名空间应为:
namespace extend\auth;或按需设为think\auth(若使用Composer加载) - 类名必须是
Auth,且包含check()等核心方法
2. 配置Auth参数
在config/auth.php中定义配置项(若无此文件可新建),内容如下:
'auth' => [
'auth_on' => 1, // 权限开关:1开启,0关闭
'auth_type' => 1, // 1实时验证,2登录时验证一次
'auth_group' => 'auth_group',
'auth_group_access' => 'auth_group_access',
'auth_rule' => 'auth_rule',
'auth_user' => 'member', // 实际用户表名(不含前缀)
],
注意:所有表名均不带数据库前缀,前缀由全局database.php统一控制。
3. 初始化并调用验证
在基础控制器(如app/common/controller/Base.php)的_initialize()中注入验证逻辑:
- 先判断是否已登录(如检查
session('uid')) - 若为超级管理员(如
uid === 1),直接跳过验证 - 否则获取当前请求规则名:
request()->module().'/'.request()->controller().'/'.request()->action() - 实例化Auth并调用
check($rule, $uid),验证不通过则$this->error('无权限')
4. 补充数据表结构
Auth类依赖三张表,需执行SQL创建(表前缀按项目统一替换,如think_):
-
think_auth_rule:存权限规则,关键字段name(如admin/article/edit)、condition(支持动态条件,如{score}>50) -
think_auth_group:存用户组,rules字段以英文逗号分隔规则ID(如"1,5,8") -
think_auth_group_access:关联用户与用户组,uid和group_id联合唯一
建表后,往auth_rule中插入对应控制器/方法的规则,才能被Auth识别。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











