oh86/laravel-gw-auth

auth tools for oh86/laravel-gw

v1.1 2025-01-17 02:23 UTC

This package is auto-updated.

Last update: 2025-02-17 02:26:09 UTC


README

一、生成配置文件

php artisan vendor:publish --provider='Oh86\GW\Auth\GatewayAuthServiceProvider'

二、简易教程

1.私密请求校验中间件

1.1 配置 config/gw-auth.php
return [
    'default' => env('GW_AUTH_DEFAULT_GATEWAY', 'default'),

    // 可配置后台接口网关、前台接口网关、openapi接口网关等
    'gateways' => [
        'default' => [
            'private-request' => [
                'app' => env('GW_AUTH_PRIVATE_APP'),
                'ticket' => env('GW_AUTH_PRIVATE_TICKET'),
                'ignore-check' => env('APP_DEBUG', false),  // 是否忽略校验,缺省是false
            ],
        ],

    ],
];
1.2 使用中间件 Oh86\GW\Auth\Middleware\CheckPrivateRequest
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Oh86\GW\Auth\Middleware\CheckPrivateRequest;

Route::post('api/private/test', [TestController::class, 'test'])->middleware([
    CheckPrivateRequest::class,
]);

2.用户认证状态校验和获取

2.1 配置 config/auth.php
return [
    // ...
    'guards' => [
        // ...

        'gw-auth' => [
            'driver' => 'gw',
            'header' => 'GW-Auth-Info',
            'user-class' => Oh86\GW\Auth\Guard\User::class,
        ]
    ],

    // ...
];
2.2 校验用户登录状态和获取用户信息
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use Oh86\GW\Auth\Middleware\CheckPrivateRequest;

Route::post('api/private/auth/test', function(Request $request) {
    $user = Auth::user();

    return $user;
})->middleware([
    CheckPrivateRequest::class,
    'auth:gw-auth',
]);

3.发送私密请求

3.1 示例一
use Oh86\GW\Auth\HttpClient\PrivateRequest;

$req = new PrivateRequest([
    'baseUrl' => 'http://127.0.0.1:8000', 
    'app' => 'app1', 
    'ticket' => '...',
    ]);

$response = $req->get('api/private/test', ['foo' => 'bar']);

$status = $response->status();
$arr = $response->json();
3.2 示例二,使用带有服务发现的私密请求
先配置 config/gw-auth.php
return [
    'default' => env('GW_AUTH_DEFAULT_GATEWAY', 'default'),

    'gateways' => [
        'default' => [
            // ...

            // 服务发现配置
            'service-discovery' => [
                'private-request' => [
                    'baseUrl' => env('GW_AUTH_SERVICE_DISCOVERY_BASE_URL'),
                    'app' => env('GW_AUTH_SERVICE_DISCOVERY_APP'),
                    'ticket' => env('GW_AUTH_SERVICE_DISCOVERY_TICKET'),
                ],
            ],
        ],

    ],
];
请求示例:
use Oh86\GW\Auth\HttpClient\PrivateRequestWithServiceDiscovery;

$req = new PrivateRequestWithServiceDiscovery('app1');

$response = $req->get('api/private/test', ['foo' => 'bar']);

$status = $response->status();
$arr = $response->json();