PHPackages                             maxlcoder/laravel-desensitization - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. maxlcoder/laravel-desensitization

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

maxlcoder/laravel-desensitization
=================================

敏感信息处理

318PHP

Since Dec 29Pushed 4mo ago1 watchersCompare

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

READMEChangelogDependenciesVersions (1)Used By (0)

laravel desensitization middleware
==================================

[](#laravel-desensitization-middleware)

[![Latest Version on Packagist](https://camo.githubusercontent.com/889b6bcfaa9112af83905dabfb47275d17733d4865e56c61726c179bdcfb13de/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d61786c636f6465722f6c61726176656c2d646573656e736974697a6174696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/maxlcoder/laravel-desensitization)[![Total Downloads](https://camo.githubusercontent.com/98ab62f1261147e4d987aa744325ed9aea850cc87307b1fcd10203fff6271af3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d61786c636f6465722f6c61726176656c2d646573656e736974697a6174696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/maxlcoder/laravel-desensitization)[![GitHub Actions](https://github.com/maxlcoder/laravel-desensitization/actions/workflows/main.yml/badge.svg)](https://github.com/maxlcoder/laravel-desensitization/actions/workflows/main.yml/badge.svg)

针对 API 的敏感数据处理的中间键，配置形式，脱敏函数和脱敏方法均可高度自定义

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

[](#installation)

You can install the package via composer:

```
composer require maxlcoder/laravel-desensitization
```

Config
------

[](#config)

```
php artisan vendor:publish --provider="Maxlcoder\LaravelDesensitization\LaravelDesensitizationServiceProvider"
```

- functions: 脱敏使用的全局辅助函数，例如 'mobile' =&gt; 'desensitiseMobile'，使用全局辅助函数 desensitiseMobile 对 uris 中配置的 type 为 mobile 类型的 key 做执行脱敏
- class: 全局自定义脱敏类, name 表示类的全路径，这里只能填字符串，functions 表示自定义脱敏类中不同类型对应的脱敏方法
- functions 和 class 优先使用 functions 全局辅助函数，当全局辅助函数没有指定，才使用全局自定义脱敏类 class . 如果二者均没有配置，则不处理脱敏，但是会有 error 日志提示
- uris: 全局需要进行脱敏的接口，以及接口返回中需要脱敏的字段名和脱敏类型，系统会对返回的数据结构做解析，并进行迭代脱敏，其中数组 \* 表示返回的数据是数组

```
[
    'functions' => [
        'mobile' => 'desensitise_mobile',
        'name' => 'desensitise_name'
    ],
    'class' => [
        'name' => 'App\Lib\Desensitization',
        'functions' => [
            'mobile' => 'desensitiseMobile',
        ],
    ],
    'uris' => [
        'admin/admins' => [
            ['key' => 'data.data.*.mobile', 'type' => 'mobile'],
            ['key' => 'data.data.*.name', 'type' => 'name'],
        ],
    ],
];
```

Usage
-----

[](#usage)

在 `Kerner.php` 中引入中间件

```
protected $routeMiddleware = [
        ...

        'desensitization' => \Maxlcoder\LaravelDesensitization\Http\Middleware\Desensitization::class,
    ];
```

### Example

[](#example)

1. 示例接口 `admin/admins`, 脱敏前返回结果

```
{
    "code": 200,
    "msg": "success",
    "data": {
        "mobile": "18900000001",
        "contacts": [
            {
                "name": "王组闲",
                "mobile": "18900000002"
            }
        ]
    }
}
```

2. 配置 修改文件 `config/laravel-desensitization.php`

```
