PHPackages                             iset/tp5-rbac - 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. iset/tp5-rbac

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

iset/tp5-rbac
=============

基于gmars/tp5-rbac库。这个扩展是基于thinkPHP5框架的RBAC权限验证的扩展。使用本扩展能够快速的将RBAC权限控制器模块引入到自己的系统中。原则上本模块适合于任何PHP框架但是由于使用了thinkPHP5的特性所以使用composer安装到其他框架时需要做相应的修改。模块所需要的扩展库可以通过thinkPHP5的migration来做数据迁移。

3.0.1(5y ago)02MITPHPPHP &gt;=5.6.0

Since Aug 22Pushed 5y agoCompare

[ Source](https://github.com/zxgiot2014/tp5-rbac)[ Packagist](https://packagist.org/packages/iset/tp5-rbac)[ RSS](/packages/iset-tp5-rbac/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (1)Versions (21)Used By (0)

tp51-rbac
=========

[](#tp51-rbac)

> 本扩展包是tp5的rbac包，使用了部分tp5的特性实现了关系型数据库中特殊数据结构的处理。

安装方法
----

[](#安装方法)

先安装composer如果不知道怎么安装使用composer请自行百度。 打开命令行工具切换到你的tp5项目根目录

```
composer require iset/tp5-rbac

```

使用说明
====

[](#使用说明)

配置
--

[](#配置)

请将此配置加在rbac/config/app.php的配置中

```
    // +----------------------------------------------------------------------
    // | RBAC设置,rbac模块配置依赖
    // +----------------------------------------------------------------------
    'rbac' => [
        // 验证方式 jwt(token方式)形式或者service(基于cookie)方式
        'type' => 'jwt',
        // rbac要使用的数据库配置为空则为默认库(生成表的前缀依赖此配置)
        'db' => [
            // 数据库表前缀
            'prefix' => 'xt_tp_',
            // 数据库类型
            'type' => 'mysql',
            // 服务器地址
            'hostname' => '127.0.0.1',
            // 数据库名
            'database' => 'iset_demo',
            // 用户名
            'username' => 'root',
            // 密码
            'password' => '',
            // 端口
            'hostport' => '',
        ],
        // 密码加密密钥
        'salt_token' => 'abcddfasdfsd',
        // 权限缓存前缀
        'permission_cache_prefix' => '_RBAC_PERMISSION_CACHE_'
    ],
```

使用说明
----

[](#使用说明-1)

实例化rbac

```
$rbac = new Rbac();
```

### 管理操作

[](#管理操作)

#### 初始化rbac所需的表

[](#初始化rbac所需的表)

```
//可传入参数$db为数据库配置项默认为空则为默认数据库(考虑到多库的情形)
$rbac->createTable();
```

该方法会生成rbac所需要的表，一般只执行一次，为了安全，执行后会加锁，下次要执行需要删除锁文件再执行。

#### 创建权限分组

[](#创建权限分组)

```
$rbac->savePermissionCategory([
    'name' => '用户管理组',
    'description' => '网站用户的管理',
    'status' => 1
]);
```

编辑和修改调用同一个方法编辑时请在参数中包含主键id的值

#### 创建权限节点

[](#创建权限节点)

```
$rbac->createPermission([
    'name' => '文章列表查询',
    'description' => '文章列表查询',
    'status' => 1,
    'type' => 1,
    'category_id' => 1,
    'path' => 'article/content/list',
]);
```

- 如果为修改则在传入参数数组中加入主键id的键值
- type为权限类型1为后端权限2为前端权限主要考虑到spa使用
- category\_id为上一步创建的权限分组的id
- 创建成功返回添加的该条权限数据，错误抛出异常

#### 创建角色&amp;给角色分配权限

[](#创建角色给角色分配权限)

```
$rbac->createRole([
    'name' => '内容管理员',
    'description' => '负责网站内容管理',
    'status' => 1
], '1,2,3');
```

- 如果修改请在第一个参数中传入主键的键值
- 第二个参数为权限节点的id拼接的字符串请使用英文逗号

#### 给用户分配角色

[](#给用户分配角色)

```
$rbac->assignUserRole(1, [1]);
```

- 该方法会删除用户之前被分配的角色
- 第一个参数为用户id
- 第二个参数为角色id的数组

#### 获取权限分组列表

[](#获取权限分组列表)

```
$rbac->getPermissionCategory([['status', '=', 1]]);
```

- 参数支持传入id查询单条数据和标准的where表达式查询列表传为空数组则查询所有

#### 获取权限列表

[](#获取权限列表)

```
$rbac->getPermission([['status', '=', 1]]);
```

- 参数支持传入id查询单条数据和标准的where表达式查询列表传为空数组则查询所有

#### 获取角色列表

[](#获取角色列表)

```
$rbac->getRole([], true);
```

- 第一个参数支持传入id查询单条数据和标准的where表达式查询列表传为空数组则查询所有
- 第二个参数选择是否查询角色分配的所有权限id默认为true

#### 删除权限分组

[](#删除权限分组)

```
$rbac->delPermissionCategory([1,2,3,4]);
```

- 参数支持传入单个id或者id列表

#### 删除权限

[](#删除权限)

```
$rbac->delPermission([1,2,3,4]);
```

- 参数支持传入单个id或者id列表

#### 删除角色

[](#删除角色)

```
$rbac->delRole([1,2,3,4]);
```

- 参数支持传入单个id或者id列表
- 删除角色会删除给角色分配的权限\[关联关系\]

#### 用户请求时验证

[](#用户请求时验证)

```
$rbac->can('article/channel/list');
```

#### 保存和编辑用户信息

[](#保存和编辑用户信息)

```
$rbac->saveUser([]);
```

#### 获取用户信息

[](#获取用户信息)

```
$rbac->getUser([]);
```

- 获取用户，支持传入查询条件

#### 删除用户信息

[](#删除用户信息)

```
$rbac->delUser([]);
```

- 根据主键删除用户(支持多主键用数组的方式传入)

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 90.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~55 days

Recently: every ~12 days

Total

20

Last Release

2133d ago

Major Versions

v1.3.1 → v2.02019-04-18

2.0.9.4 → 3.02020-07-07

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/11608966?v=4)[xgZhou](/maintainers/xgZhou)[@xgzhou](https://github.com/xgzhou)

---

Top Contributors

[![gmars](https://avatars.githubusercontent.com/u/9643824?v=4)](https://github.com/gmars "gmars (19 commits)")[![zjkal](https://avatars.githubusercontent.com/u/15082976?v=4)](https://github.com/zjkal "zjkal (2 commits)")

### Embed Badge

![Health badge](/badges/iset-tp5-rbac/health.svg)

```
[![Health](https://phpackages.com/badges/iset-tp5-rbac/health.svg)](https://phpackages.com/packages/iset-tp5-rbac)
```

###  Alternatives

[thans/tp-jwt-auth

thinkphp jwt auth composer

14889.6k6](/packages/thans-tp-jwt-auth)[casbin/think-authz

An authorization library that supports access control models like ACL, RBAC, ABAC for ThinkPHP.

27918.5k6](/packages/casbin-think-authz)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
