PHPackages                             lengbin/yii-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. lengbin/yii-rbac

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

lengbin/yii-rbac
================

yii rbac extension

024PHP

Since Feb 19Pushed 5y ago1 watchersCompare

[ Source](https://github.com/ice-leng/rabc)[ Packagist](https://packagist.org/packages/lengbin/yii-rbac)[ RSS](/packages/lengbin-yii-rbac/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

 [ ![](https://avatars0.githubusercontent.com/u/993323) ](https://github.com/yiisoft)

Yii Rabc
========

[](#yii-rabc)

这是基于[yii-rbac](https://github.com/yiisoft/rbac)修改抽离扩展版本 配合 [auth](https://github.com/ice-leng/auth) 可做鉴权 权限验证

安装
--

[](#安装)

The preferred way to install this extension is through [composer](http://getcomposer.org/download/).

Either run

```
composer require lengbin/yii-rbac

```

or add

```
"lengbin/yii-rbac": "*"

```

to the require section of your `composer.json` file.

Usage
-----

[](#usage)

用法和yii 是一致的
-----------

[](#用法和yii-是一致的)

如果使用Db驱动 请导入[sql](./src/Sql/schema-mysql.sql)

```

        // 缓存cache
        $manager = new PhpManager(new ClassNameRuleFactory(), $this->container->get(CacheInterface::class));
        // 文件
//        $manager = new PhpManagerFile(new ClassNameRuleFactory());
       // 数据库
//        $manager = new DbManager(new ClassNameRuleFactory(), new Connection($this->container), null, $this->container->get(LoggerInterface::class)->get());

        $manager->add(new Permission('createPost'));
        $manager->add(new Permission('readPost'));
        $manager->add(new Permission('deletePost'));

        $manager->add(new Role('author'));
        $manager->add(new Role('reader'));

        $manager->addChild($manager->getRole('reader'), $manager->getPermission('readPost'));

        $manager->addChild($manager->getRole('author'), $manager->getPermission('createPost'));

        $manager->addChild($manager->getRole('author'), $manager->getRole('reader'));

        $manager->assign($manager->getRole('author'), "100");

        if ($manager->userHasPermission("100", 'createPost')) {
            echo 'author has permission createPost';
        }

        $manager->add(new ActionRule());
        $manager->add((new Permission('viewList'))->withRuleName('action_rule'));

        $manager->addChild($manager->getRole('author'), $manager->getPermission('viewList'));

        var_dump($manager->userHasPermission('100', 'viewList', ['action' => 'home']), $manager->userHasPermission('100', 'viewList', ['action' => 'home2']));

        var_dump($manager->getPermission('createPost')->getAttributes(), $manager->getRoles(), $manager->getRules());

        var_dump($manager->getPermissions());
        $manager->remove(new Permission('viewList'));
        var_dump($manager->getPermissions());

        $manager->removeAll();
        // 菜单
        $manager->add(new Menu('一级菜单'));
        $manager->remove(new Menu('一级菜单'));
        $manager->getMenu("一级菜单");
```

```
// 规则
class ActionRule extends Rule
{
    public function __construct()
    {
        parent::__construct('action_rule');
    }

    public function execute(string $userId, Item $item, array $parameters = []): bool
    {
        return isset($parameters['action']) && $parameters['action'] === 'home';
    }
}
```

其他
--

[](#其他)

有问题请及时联系我，反正也会在使用中修复 - - ！

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity30

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/9342ed631e7bf15897f2e15d0a853800b84cb315e601eb3a58f2cc8938b5d011?d=identicon)[ice.leng](/maintainers/ice.leng)

---

Top Contributors

[![ice-leng](https://avatars.githubusercontent.com/u/7506787?v=4)](https://github.com/ice-leng "ice-leng (18 commits)")

### Embed Badge

![Health badge](/badges/lengbin-yii-rbac/health.svg)

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

###  Alternatives

[namshi/jose

JSON Object Signing and Encryption library for PHP.

1.8k99.6M101](/packages/namshi-jose)[league/oauth1-client

OAuth 1.0 Client Library

99698.8M106](/packages/league-oauth1-client)[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[gesdinet/jwt-refresh-token-bundle

Implements a refresh token system over Json Web Tokens in Symfony

70516.4M35](/packages/gesdinet-jwt-refresh-token-bundle)[league/oauth2-google

Google OAuth 2.0 Client Provider for The PHP League OAuth2-Client

41721.2M118](/packages/league-oauth2-google)[illuminate/auth

The Illuminate Auth package.

9327.3M1.0k](/packages/illuminate-auth)

PHPackages © 2026

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