PHPackages                             huangsen/think5.1-auth - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. huangsen/think5.1-auth

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

huangsen/think5.1-auth
======================

thinkphp5.1 Permission verification only to myself

1511PHP

Since Dec 20Pushed 7y ago1 watchersCompare

[ Source](https://github.com/h274799010/thinkphp5.1-auth)[ Packagist](https://packagist.org/packages/huangsen/think5.1-auth)[ RSS](/packages/huangsen-think51-auth/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

安装
--

[](#安装)

> composer require huangsen/think5.1-auth:dev-master

配置
--

[](#配置)

### 公共配置

[](#公共配置)

```
// auth配置 auth.php 配置文件
'auth'  => [
    'auth_on' => true, // 权限开关
        'auth_cache' => false, //是否开启缓存
        'auth_key' => '_auth_', // 数据缓存的key
        'auth_rule' => 'auth_rule', // 权限规则表
        'role' => 'auth_role', // 角色表
        'role_user' => 'auth_role_user', // 用户角色对应表
        'users' => 'user', // 用户信息表
        'users_auth_fields' => '',//用户需要验证的规则表达式字段 空代表所有用户字段

        //不需要登录的
        'no_need_login_url' => [
            '/public/login'
        ],

        //登录用户不需要验证的
        'allow_visit' => [
            '/file/upload'
        ]
],

```

### 导入数据表

[](#导入数据表)

> `gold_` 为自定义的数据表前缀

```
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for gold_auth_role
-- ----------------------------
DROP TABLE IF EXISTS `gold_auth_role`;
CREATE TABLE `gold_auth_role`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称',
  `pid` smallint(6) NULL DEFAULT NULL COMMENT '父角色ID',
  `mark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色唯一标识',
  `rules` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '用户组拥有的规则id，多个规则 , 隔开',
  `status` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '用户组状态：为1正常，为0禁用,-1为删除',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述',
  `create_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间',
  `update_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新时间',
  `pid` int(2) UNSIGNED NULL DEFAULT NULL COMMENT '父级ID',
  `listorder` int(3) NOT NULL DEFAULT 0 COMMENT '排序，优先级，越小优先级越高',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `parentId`(`pid`) USING BTREE,
  INDEX `status`(`status`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for gold_auth_role_user
-- ----------------------------
DROP TABLE IF EXISTS `gold_auth_role_user`;
CREATE TABLE `gold_auth_role_user`  (
  `role_id` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '角色 id',
  `user_id` int(11) NULL DEFAULT 0 COMMENT '用户id',
  INDEX `group_id`(`role_id`) USING BTREE,
  INDEX `user_id`(`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户角色对应表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for gold_auth_rule
-- ----------------------------
DROP TABLE IF EXISTS `gold_auth_rule`;
CREATE TABLE `gold_auth_rule`  (
  `id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '规则编号',
  `name` char(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '链接地址 模块/控制器/方法',
  `title` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '规则中文名称',
  `type` tinyint(1) NULL DEFAULT 1 COMMENT '规则类型1pc端规则，2手机端权限 ，3 同时是手机和pc',
  `status` tinyint(1) NULL DEFAULT 1 COMMENT '状态：为1正常，为0禁用',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则描述',
  `condition` char(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '规则表达式，为空表示存在就验证，不为空表示按照条件验证',
  `sort` int(10) NULL DEFAULT 0 COMMENT '排序，优先级，越小优先级越高',
  `create_time` int(11) NULL DEFAULT 0 COMMENT '创建时间',
  `update_time` int(11) NULL DEFAULT 0 COMMENT '更新时间',
  `pid` int(2) UNSIGNED NULL DEFAULT NULL COMMENT '父级ID',
  `fontawesome` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'fontawesome的图标',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `name`(`name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '规则表' ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

```

原理
--

[](#原理)

Auth权限认证是按规则进行认证。 在数据库中我们有

- 规则表（gold\_auth\_rule）
- 角色表(gold\_role)
- 用户角色对应表（gold\_role\_user）
- 用户表（gold\_users）用户表需要自己创建

在规则表中定义规则,角色表里面定角色和,权限授权表里面对应角色拥有的权限(一个角色对应多个权限),在用户角色对应表里面定义用户有多少角色(多个)

使用
--

[](#使用)

判断权限方法

```

// 获取auth实例
$auth = \huangsen\auth\Auth::getInstance();

// 检测权限
if($auth->check('规则1,规则2','用户id','and')){// 第一个参数是规则名称(也可以是规则id参数必须为数字),第二个参数是用户UID,第三个参数为判断条件
	//有显示操作按钮的权限
}else{
	//没有显示操作按钮的权限
}

```

Auth类也可以对节点进行认证，我们只要将规则名称，定义为节点名称就行了。 可以在公共控制器Base中定义\_initialize方法

```
