supaapps/supaapps-guard
最新稳定版本:v1.0.0
Composer 安装命令:
composer require supaapps/supaapps-guard
包简介
A JWT Auth driver, opinionated and tailed to work with supaapps-auth-server
README 文档
README
Installation
composer require supaapps/supaapps-guard
ENV vars
add env vars to your .env:
SUPAAPPS_GUARD_AUTH_SERVER_URL=http://example.com SUPAAPPS_GUARD_AUTH_REALM_NAME=myapp
Add new custom guard
On config/auth.php add the new guard
'guards' => [ 'jwt' => [ 'driver' => 'supaapps-guard', 'provider' => 'users', ], ],
Also, set the default guard to jwt
'defaults' => [ 'guard' => 'jwt', ...
Usage example
on routes/api.php, add following lines
Route::middleware('auth:jwt')->get('/user', function (Request $request) { return [ $request->user(), auth()->firstName(), auth()->lastName(), auth()->email(), auth()->scopes(), auth()->scopesArray(), ]; });
note: auth() uses the default drive by default. If you didn't set the jwt as default driver then you need to call auth('jwt') on the previous usage example
Testing
You can generate JWT token for testing. It will be generated with private_key from tests folder. And will be compared with public_key on same folder as well. example
use Tests\TestCase; use Supaapps\Guard\Tests\Concerns\GenerateJwtToken; class CustomTest extends TestCase { use GenerateJwtToken; public function testThatIAmActingAsUser(): void { $user = User::factory()->create(); $this->withAccessTokenFor($user); $this->assertTrue(auth('jwt')->check()); $this->assertTrue($user->id, auth('jwt')->id()); } }
HTTP testing
withAccessTokenFor method is adding the Bearer token to headers which are sent by http tests. But you need to specify the server url somewhere on your tests. eg. tests/CreatesApplication:
<?php use Supaapps\Guard\Tests\Concerns\GenerateJwtToken; trait CreatesApplication { use GenerateJwtToken; public function createApplication(): Application { ... $this->setAuthServerUrl(); return $app; } }
Next run your http tests, for example:
<?php namespace Tests\Feature; use Tests\TestCase; class CustomTest extends TestCase { public function itReturnsTheAuthUser(): void { $user = User::factory()->create(); $this->withAccessTokenFor($user); // assume you have /user endpoint that // - uses auth:jwt middleware // - and returns auth user $response = $this->getJson('/user'); $response->assertOk() ->assertJson($user->toArray()); } }
统计信息
- 总下载量: 1.64k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-01-27