oh86 / laravel-gw-auth
auth tools for oh86/laravel-gw
v1.1
2025-01-17 02:23 UTC
Requires
Requires (Dev)
- laravel/framework: ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
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();