misterliu/tp5-auth

This is a Auth class library based on the ThinkPHP5 framework

v0.4 2020-03-07 07:15 UTC

This package is auto-updated.

Last update: 2025-06-07 18:35:10 UTC


README

tp5权限 这是一个基于ThinkPHP5框架的Auth类库

安装

composer require misterliu/tp5-auth

#认证原理 认证规则表 (think_auth_rule) 认证用户组表 (think_auth_group) 认证用户组授权权限表(think_auth_group_access) 我们在认证规则表中定义权限规则, 在认证用户组表中定义每个用户组有哪些权限规则,在认证用户组授权权限表中定义用户所属的用户组。

#配置文件 将目录下config/auth.php配置文件复制到TP5框架配置文件目录

return [

// SESSION识别标识
'auth_session'      => '自定义',   
// 是否开启测试数据操作           	
'show_testdata'     => false,                      	
// 认证开关
'auth_on'           => true,           
// 认证方式,1为实时认证;2为登录认证。           					
'auth_type'         => 1,    
// 用户组数据表名                     					
'auth_group'        => 'auth_group',   
// 用户-用户组关系表     				    
'auth_group_access' => 'auth_group_access', 	
// 权限规则表				
'auth_rule'         => 'auth_rule',        
// 用户信息表 					
'auth_user'         => 'member',             					

];

#数据库建立

DROP TABLE IF EXISTS `s_auth_group`;
CREATE TABLE `s_auth_group`  (
  `id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '分组ID',
  `name` char(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '分组名称',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色描述',
  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '分组状态',
  `rules` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '节点',
  `create_time` int(10) UNSIGNED NOT NULL COMMENT '创建时间',
  `update_time` int(10) UNSIGNED NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `s_auth_group_access`;
CREATE TABLE `s_auth_group_access`  (
  `member_id` mediumint(8) UNSIGNED NOT NULL COMMENT '用户ID',
  `group_id` mediumint(8) UNSIGNED NOT NULL COMMENT '分组ID',
  UNIQUE INDEX `uid_group_id`(`member_id`, `group_id`) USING BTREE,
  INDEX `uid`(`member_id`) USING BTREE,
  INDEX `group_id`(`group_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色节点关联表' ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `s_auth_rule`;
CREATE TABLE `s_auth_rule`  (
  `id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '节点ID',
  `name` char(80) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '节点名称',
  `title` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '节点标题',
  `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '认证类型 0',
  `node_icon` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '节点图标',
  `class_icon` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分类图标',
  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '节点状态',
  `condition` char(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '节点规则',
  `sort` smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序',
  `pid` smallint(6) UNSIGNED NOT NULL COMMENT '父级ID',
  `level` tinyint(1) UNSIGNED NOT NULL COMMENT '模块级别',
  `create_time` int(10) UNSIGNED NOT NULL COMMENT '更新时间',
  `update_time` int(10) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `name`(`name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作节点表' ROW_FORMAT = Dynamic;

#代码举例 public function test(){

    $auth = new Auth();
    $url = request()->module().'/'.request()->controller().'/'.request()->action();
    $admin = $auth->check($url,1);// booleans
    halt($admin);
}           					

第三个参数指定为"and 或 or" and表示同时成立时才返回true。or其中一条规则成立都返回true

condition字段是规则条件,默认为空 表示没有附加条件
例:{points}<100 这里 {points} 表示 think_members 表 中字段 points 的值。

#备注 tp5.1需根据文档作相应更改 如:use think\Facade\Config;配置文件配置参考文档做相应调整 use think\Config; use think\Db; use think\Loader; use think\Request; use think\Session;