PHPackages                             ttlphp/laravel-crbac - 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. ttlphp/laravel-crbac

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

ttlphp/laravel-crbac
====================

基于 laravel5+、6+、7+、8+、9+ 权限管理，一键安装

v1.2.x-dev(6mo ago)2363MITPHPPHP &gt;=7.0.0

Since Apr 20Pushed 4mo ago1 watchersCompare

[ Source](https://github.com/ttlxihuan/laravel-crbac)[ Packagist](https://packagist.org/packages/ttlphp/laravel-crbac)[ Docs](https://github.com/ttlxihuan/laravel-crbac)[ RSS](/packages/ttlphp-laravel-crbac/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (6)Dependencies (1)Versions (10)Used By (0)

laravel5+、laravel6+、laravel7+、laravel8+、laravel9+、laravel10+、laravel11+、laravel12+ 权限管理系统
=========================================================================================

[](#laravel5laravel6laravel7laravel8laravel9laravel10laravel11laravel12-权限管理系统)

该模板依赖于laravel，包含基本权限管理所需要功能改模块，安装后简单配置即可使用，并且提供View，比较适合项目初期。

目录
--

[](#目录)

- [安装](#installation)
- [配置](#configuration)
- [语言](#lang)
- [表及数据](#table)
- [使用](#use)
- [注意项](#attention)

Installation
------------

[](#installation)

**注意** 安装前确定laravel已经安装就绪

### 使用composer安装

[](#使用composer安装)

```
composer require ttlphp/laravel-crbac dev-master
```

### 使用GIT安装

[](#使用git安装)

使用GIT命令下载程序包。

```
git clone https://github.com/ttlxihuan/laravel-crbac

```

修改自动加载配置

打开 `vendor/composer/autoload_psr4.php` 添加命令空间加载目录：

```
'Laravel\\Crbac\\' => array($vendorDir . '/laravel-crbac/src'),
```

打开 `vendor/composer/autoload_static.php` 添加命令空间加载目录，此文件有多处需要添加，暂不示例

打开 `vendor/composer/autoload_files.php` 添加助手函数加载：

```
$vendorDir . '/laravel-crbac/src/helpers.php',
```

Configuration
-------------

[](#configuration)

需要在laravel中启用应用，需要作几个配置修改。

打开配置文件 `config/app.php` 添加应用服务到容器:

```
    'name' => '应用名', // 展示的登录和菜单左侧
    'providers' => [ // laravel-10以内版本使用
        Laravel\Crbac\ServiceProvider::class,
    ]
```

打开配置文件 `bootstrap/providers.php` 添加应用服务到容器:（laravel-11起使用）

```
    return [ // laravel-11及以上版本使用
        Laravel\Crbac\ServiceProvider::class,
    ]
```

打开配置文件 `config/auth.php` 配置授权模型:

```
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'admin',
            'remember' => 4320,  // 记住登录时长（分）
            // 范围：0 ~ 50， 0 表示不锁定，默认：3
            'attempt_interval' => 3, // 登录失败尝试锁定间隔次数，达到将限时不可登录
            // 范围：0 ~ 120， 0 表示登录失败立即禁用账号，默认：12
            'attempt_max' => 5 // 最多尝试次数，超出将禁用账号
            // 范围：60 ~ 86400，默认：300
            'lock_time' => 300 // 锁定时长基数（秒），实际锁定时长 = lock_time * pow(2, attempt_total / attempt_interval)
        ],
    ],
    'providers' => [
        'admin' => [
            'driver' => 'eloquent',
            'model' => Laravel\Crbac\Models\Power\Admin::class,
        ],
        // 这里可配置其它授权模型
    ],
```

配置数据，运行安装命令（注意多次运行此命令会覆盖重写自带的表和数据）

```
php artisan crbac:table
```

打开浏览器验证效果

lang
----

[](#lang)

项目中提供了中文基础文件，方便在验证分页等信息是自由切换，项目全部以中文提示为语言基础。 安装中文需要运行命令

```
php artisan crbac:lang
```

命令会复制预定中文字典复制到语言配置目录中。

打开配置文件 `config/app.php` 修改默认语言

```
'locale' => 'cn',
```

table
-----

[](#table)

当使用手动安装或初始化权限数据表结构时，在这里提供了 artisan 命令，方便手动重置表结构及基础数据。

### 表结构如下

[](#表结构如下)

表名说明power\_role\_admin管理员表power\_item权限项表，记录所有权限项基础数据power\_item\_group权限项组表，用于权限项分组，当前只设计一级。power\_menu菜单表，记录所有菜单基础数据，并且可以关联到权限项power\_menu\_group菜单组表，用于区分不同菜单组的菜单结构。power\_menu\_level菜单层级表，记录菜单的组成层级结构。power\_role角色表。power\_role\_admin角色与管理员关联表power\_role\_item角色与权限项关联表power\_route路由记录表，方便添加权限项。use
---

[](#use)

要使用Crbac功能必需配置授权模型且必需继承预定模型（参考下面介绍），如果没有配置则整个项目会跳过路由配置和权限处理初始化，即无法正常使用权限功能。

#### 权限校验

[](#权限校验)

Crbac权限处理会自动绑定在使用了auth中间件的路由上，即新增路由只需要追加auth中间件即可自动进行权限核验。

#### 权限管理

[](#权限管理)

权限使用，管理员 —&gt; 角色（多个） —&gt; 权限项（多个）

`每个管理员可以绑定多个角色，每个角色可以绑定多个权限项，之间允许交叉和重复`

菜单使用，管理员 —&gt; 菜单组 —&gt; 权限项（多个）

`每个管理员绑定一套菜单组，方便各组管理员展示完全不同的菜单结构`

#### 定制权限

[](#定制权限)

预定权限只适用预定全部功能，额外增加的权限即需要定制权限，路由和菜单权限预定功能即可满足，可自行配置增加权限组、权限项、菜单组、菜单项、角色等操作。

如果需要页面内或逻辑权限也可以定制添加，并需要在业务代码中增加权限判断，可以使用函数：

```
// 必需要有登录数据，否则永远返回false
// 此函数是所有权限验证通用函数
isPower($code, $default = false):bool
```

更多协助函数可参考文件：`./vendor/ttlphp/laravel-crbac/src/helpers.php`

#### 登录和退出

[](#登录和退出)

Crbac会在路由加载完成后判断是否存在别名为 login 和 logout 两个路由，如果没有则会自动增加预定好的两个登录和退出路由，保证权限基本正常使用。如果需要截取预定登录和退出路由只需要手动添加两个别名路由即可。

#### 路径式路由

[](#路径式路由)

路径式路由可以节省路由匹配次数。

```
