首页 >后端开发 >php教程 >记录Laravel中的API身份验证

记录Laravel中的API身份验证

Emily Anne Brown
Emily Anne Brown原创
2025-03-05 15:45:15569浏览

>本教程展示了使用现代API文档工具Scramble的常见Laravel API身份验证方法及其文档。 CRAMBLE完全支持OpenAPI 3.1.0安全规范,启用全面的身份验证方法文档。

圣经身份验证

一种流行的Laravel身份验证方法标题发送了一个携带者令牌:。 使用服务提供商的Authorization方法:Authorization: Bearer *** boot
use Dedoc\Scramble\Scramble;
use Dedoc\Scramble\Support\Generator\OpenApi;
use Dedoc\Scramble\Support\Generator\SecurityScheme;

public function boot()
{
    Scramble::configure()
        ->withDocumentTransformers(function (OpenApi $openApi) {
            $openApi->secure(
                SecurityScheme::http('bearer')
            );
        });
}

Documenting API authentication in Laravel with Scramble>这为所有端点设置了一个默认的载体令牌安全方案。 如果正确配置了Cramble的文档路由,则状态身份验证将在“尝试”功能中自动运行。

>

>护照身份验证

>对于OAuth2身份验证,OpenAPI使用了

>安全方案。 争夺允许精确配置:

oauth2

范围可以在全球或粒状对照中定义。 虽然stoplight Elements(Scramble的默认UI)显示
use Dedoc\Scramble\Scramble;
use Dedoc\Scramble\Support\Generator\OpenApi;
use Dedoc\Scramble\Support\Generator\SecurityScheme;
use Dedoc\Scramble\Support\Generator\SecuritySchemes\OAuthFlow;

public function boot()
{
    Scramble::configure()
        ->withDocumentTransformers(function (OpenApi $openApi) {
            $openApi->secure(
                SecurityScheme::oauth2()
                    ->flow('authorizationCode', function (OAuthFlow $flow) {
                        $flow
                            ->authorizationUrl(config('app.url').'/oauth/authorize')
                            ->tokenUrl(config('app.url').'/oauth/token')
                            ->addScope('*', 'all');
                    })
            );
        });
}
要求,但其他UIS(标量,摇动)有助于从文档中直接获取。

oauth2

记录Sanctum的Documenting API authentication in Laravel with Scramble端点

>记录Sanctum's oauth/token端点是可以通过社区基础的争夺扩展而实现的:>。 切记将其包含在Cramble的可档案路线中:

oauth/token

自定义身份验证
Scramble::configure()
    ->routes(function (Route $r) {
        return Str::startsWith($r->uri, 'api/') || $r->uri === 'oauth/token';
    });

多个标头身份验证Documenting API authentication in Laravel with Scramble

>对于需要多个标头的身份验证,请在API安全要求中指定它们:

这同时授权

标题。

> 在查询参数中
use Dedoc\Scramble\Scramble;
use Dedoc\Scramble\Support\Generator\OpenApi;
use Dedoc\Scramble\Support\Generator\SecurityScheme;

public function boot()
{
    Scramble::configure()
        ->withDocumentTransformers(function (OpenApi $openApi) {
            $openApi->components->securitySchemes['tenant'] = SecurityScheme::apiKey('header', 'X-Tenant');
            $openApi->components->securitySchemes['bearer'] = SecurityScheme::http('bearer');

            $openApi->security[] = new SecurityRequirement([
                'tenant' => [],
                'bearer' => [],
            ]);
        });
}
api令牌

X-Tenant如果API令牌是一个查询参数,请使用:> Authorization

>有关更多安全方案详细信息,请参阅Scramble的文档:。 排除身份验证的路线

phpdoc注释不包括身份验证的路由。 操作变压器提供了更大的灵活性。 例如,豁免缺少

中间件的路由:
use Dedoc\Scramble\Scramble;
use Dedoc\Scramble\Support\Generator\OpenApi;
use Dedoc\Scramble\Support\Generator\SecurityScheme;

public function boot()
{
    Scramble::configure()
        ->withDocumentTransformers(function (OpenApi $openApi) {
            $openApi->secure(
                SecurityScheme::apiKey('query', 'api_token')
            );
        });
}
use Dedoc\Scramble\Scramble;
use Dedoc\Scramble\Support\Generator\OpenApi;
use Dedoc\Scramble\Support\Generator\SecurityScheme;

public function boot()
{
    Scramble::configure()
        ->withDocumentTransformers(function (OpenApi $openApi) {
            $openApi->secure(
                SecurityScheme::http('bearer')
            );
        });
}

这将自动指定没有身份验证中间件的路由为公共。 这种方法还允许将特定的安全要求分配给操作。

>

结论

> OpenAPI和CRAMBLE提供了可靠的解决方案,用于记录各种API身份验证方法,包括基于中间件的自动处理,最大程度地减少手动注释。 在> https://www.php.cn/link/0fcbc3c3c0cf262c771001930af2406bbc

中,探索争夺争夺战。

以上是记录Laravel中的API身份验证的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn