PHPackages                             douyuxingchen/php-sys-auth - 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. douyuxingchen/php-sys-auth

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

douyuxingchen/php-sys-auth
==========================

PHP外部系统授权签名验证库，帮助您保护您的应用程序免受未经授权的访问。

17PHP

Since Nov 23Pushed 2y agoCompare

[ Source](https://github.com/douyuxingchen/php-sys-auth)[ Packagist](https://packagist.org/packages/douyuxingchen/php-sys-auth)[ RSS](/packages/douyuxingchen-php-sys-auth/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

php-sys-auth
============

[](#php-sys-auth)

PHP外部系统授权签名验证库。这个SDK是一个用于外部系统授权签名验证的工具，它旨在帮助您确保来自外部系统的请求是合法和受信任的。

特性
--

[](#特性)

- 支持外部系统请求的签名验证。
- 提供了简单而强大的 API，方便集成到您的 PHP 应用程序中。
- 帮助您保护您的应用程序免受未经授权的访问。

说明文档
----

[](#说明文档)

### 安装

[](#安装)

```
composer require "douyuxingchen/php-sys-auth"
```

### 更新

[](#更新)

```
composer update "douyuxingchen/php-sys-auth" --ignore-platform-reqs
```

### Laravel框架快速接入

[](#laravel框架快速接入)

#### 步骤1：注册服务提供者

[](#步骤1注册服务提供者)

在 config/app.php 文件中的 providers 数组中注册你的服务提供者。

```
'providers' => [
  // 其他服务提供者...
  Douyuxingchen\PhpSysAuth\ConfigProvider::class,
],
```

#### 步骤2：生成配置文件

[](#步骤2生成配置文件)

运行以下命令生成配置文件

```
php artisan vendor:publish --provider="Douyuxingchen\PhpSysAuth\ConfigProvider"
```

用户需要在每次更新包的时候都要覆盖资源，你可以使用 --force 标志。

#### 步骤3：创建中间件

[](#步骤3创建中间件)

```
php artisan make:middleware SysAuthMiddleware
```

#### 步骤4：注册中间件

[](#步骤4注册中间件)

在 `app/Http/Kernel.php` 文件的 `$routeMiddleware` 数组中，注册中间件：

```
protected $routeMiddleware = [
    'api.sys.auth' => \App\Http\Middleware\SysAuthMiddleware::class,
];
```

#### 步骤5：中间件接入

[](#步骤5中间件接入)

```
public function handle($request, Closure $next)
{
    $appKey = $request->header('AppKey');
    $authToken = $request->header('Authorization');

    if(!$appKey || !$authToken) {
        return response()->json(['message' => 'AppKey or Authorization not found'], 400);
    }

    try {
        (new AuthApi($appKey))->setToken($authToken)->verify();
    } catch (ConfigException $e){
        // TODO 配置文件错误
        $code = $e->getCode();
        $message = $e->getMessage();
        return response()->json('Config error', 500);
    } catch (ErrCodeException $e) {
        // TODO 业务错误
        $code = $e->getCode();
        $message = $e->getMessage();
        // 根据不同的错误信息，进行不同的业务处理
        return response()->json(['message' => $message]);
    } catch (ValidationException|TokenInvalidException $e) {
        // TODO 签名认证失败
        $code = $e->getCode();
        $message = $e->getMessage();
        // 签名验证失败，可以进行统一返回处理
        return response()->json(['message' => 'Unauthorized'], 401);
    }

    return $next($request);
}
```

#### 步骤6：路由中接入中间件

[](#步骤6路由中接入中间件)

路由组允许你共享路由属性，例如中间件，这样不需要在每个单独的路由上定义那些属性。

```
