PHPackages                             lion9966/think-permission - 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. lion9966/think-permission

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

lion9966/think-permission
=========================

thinkphp 6 permission 权限管理

v1.1.5(2y ago)01MITPHPPHP &gt;=7.4

Since Jun 10Pushed 2y ago1 watchersCompare

[ Source](https://github.com/lion9966/think-permission)[ Packagist](https://packagist.org/packages/lion9966/think-permission)[ RSS](/packages/lion9966-think-permission/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (7)Used By (0)

think-permission
================

[](#think-permission)

thinkphp 6 think-permission 权限管理

### 安装

[](#安装)

```
composer require lion9966/think-permission

```

### 使用

[](#使用)

- [创建必要数据](#%E5%88%9B%E5%BB%BA%E5%BF%85%E8%A6%81%E6%95%B0%E6%8D%AE)
- - [规则](#%E8%A7%84%E5%88%99)
- - [角色](#%E8%A7%92%E8%89%B2)
- - [用户](#%E7%94%A8%E6%88%B7)
- [分配关系](#%E5%88%86%E9%85%8D%E5%85%B3%E7%B3%BB)
- - [规则与角色](#%E8%A7%84%E5%88%99%E4%B8%8E%E8%A7%92%E8%89%B2)
- - [用户与角色](#%E7%94%A8%E6%88%B7%E4%B8%8E%E8%A7%92%E8%89%B2)
- [解除关系](#%E8%A7%A3%E9%99%A4%E5%85%B3%E7%B3%BB)
- - [规则与角色](#%E8%A7%A3%E9%99%A4%E8%A7%84%E5%88%99%E4%B8%8E%E8%A7%92%E8%89%B2)
- - [用户与角色](#%E8%A7%A3%E9%99%A4%E7%94%A8%E6%88%B7%E4%B8%8E%E8%A7%92%E8%89%B2)
- [权限判断](#%E6%9D%83%E9%99%90%E5%88%A4%E6%96%AD)
- [数据表](#%E6%95%B0%E6%8D%AE%E8%A1%A8)

### 创建必要数据

[](#创建必要数据)

#### 规则

[](#规则)

```
use lion9966\Permission\Model\Permission;
// 创建一条可查看首页的权限
Permission::create(['name' => 'home']);
```

#### 角色

[](#角色)

```
use lion9966\Permission\Model\Role;
// 创建�一个名为编辑的角色
Role::create(['name' => 'writer']);
```

#### 用户

[](#用户)

```
use lion9966\Permission\Model\User;
// 创建�一个名为lion9966的用户
User::create(['name' => 'lion9966']);
```

### 分配关系

[](#分配关系)

#### 规则与角色

[](#规则与角色)

```
use lion9966\Permission\Model\Permission;
use lion9966\Permission\Model\Role;
// 将home规则分配到writer角色
$permission = Permission::findByName('home');
$role = Permission::findByName('writer');
$permission->assignRole($role);

// 将home规则分配到writer角色 (跟上面效果一样)
$permission = Permission::findByName('home');
$role = Permission::findByName('writer');
$role->assignPermission($permission);
```

#### 用户与角色

[](#用户与角色)

```
use lion9966\Permission\Model\User;
use lion9966\Permission\Model\Role;

// 为用户lion9966分配 writer角色
$user = User::findByName('lion9966');
$role = Permission::findByName('writer');
$user->assignRole($role);

// 为用户lion9966分配 writer角色 (跟上面效果一样)
$user = User::findByName('lion9966');
$role = Permission::findByName('writer');
$role->assignUser($user);
```

### 解除关系

[](#解除关系)

#### 解除规则与角色

[](#解除规则与角色)

```
use lion9966\Permission\Model\Permission;
use lion9966\Permission\Model\Role;

// home规则与writer角色 解除关系
$permission = Permission::findByName('home');
$role = Permission::findByName('writer');
$permission->removeRole($role);

// writer角色与home规则 解除关系(跟上面效果一样)
$permission = Permission::findByName('home');
$role = Permission::findByName('writer');
$role->removePermission($permission);
```

#### 解除用户与角色

[](#解除用户与角色)

```
use lion9966\Permission\Model\User;
use lion9966\Permission\Model\Role;

// 用户lion9966与writer角色 解除关系
$user = User::findByName('lion9966');
$role = Permission::findByName('writer');
$user->removeRole($role);

// writer角色与用户lion9966 解除关系 (跟上面效果一样)
$user = User::findByName('lion9966');
$role = Permission::findByName('writer');
$role->removeUser($user);
```

### 权限判断

[](#权限判断)

#### 手动

[](#手动)

```
use lion9966\Permission\Model\User;

$user = User::findByName('lion9966');
if ($user->can('home')) {
    // 有 `home`权限
} else {
    // 无 `home`权限
}
```

#### 路由守护

[](#路由守护)

用户信息，请手动注入到`$request->user`上，并且使用 `\lion9966\Permission\Contract\UserContract` 接口。 [Demo](#%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%B3%A8%E5%85%A5%E7%94%A8%E6%88%B7)`/home` 路由添加一条权限控制 访问者有 `home`权限才能允许访问

```
Route::post('/home', 'home/index')->middleware('auth', 'home');
```

### 中间件注入用户

[](#中间件注入用户)

#### 用户模型

[](#用户模型)

```
