我正在使用DarkaOnLine的L5-swagger作为我的项目。我想在我的文档中使用JWT Auth。我添加了这段代码:
/**
@OAS\SecurityScheme(
securityScheme="API Key Auth",
type="apiKey",
in="header",
name="Authorization",
)
**/
在swagger UI中,"授权"显示按钮,并有一个表单来填充令牌。但是在我输入之后,我仍然得到了#34; token_not_provided"函数中的错误,需要令牌才能访问它。
提前致谢。
答案 0 :(得分:4)
@OAS
注释适用于OpenAPI 3.0,其中承载身份验证定义为type: http
+ scheme: bearer
:
/**
@OAS\SecurityScheme(
securityScheme="bearerAuth",
type="http",
scheme="bearer"
)
**/
确保您的操作使用的security
名称与上面securityScheme="<NAME>"
中指定的名称相同。例如:
/**
* @OAS\Get(
* ...
* security={{"bearerAuth":{}}}
* ...
在Swagger UI的“授权”对话框中,输入不带“Bearer”前缀的令牌。
答案 1 :(得分:4)
您可以修改swagger配置,如下所示。即config / l5-swagger.php
'bearer_token' => [ // Unique name of security
'type' => 'apiKey', // Valid values are "basic", "apiKey" or "oauth2".
'description' => 'Enter token in format (Bearer <token>)',
'name' => 'Authorization', // The name of the header or query parameter to be used.
'in' => 'header', // The location of the API key. Valid values are "query" or "header".
],
然后添加以修改您的操作,如下所示。
/**
* @OA\Get(
* ...
* security={{"bearer_token":{}}}
* ...
* )
*/
请注意,此处使用的bearer_token
与证券的唯一名称相同。
使用这种方法,您无需更改中间件。
答案 2 :(得分:3)
此链接解决了我的问题。 Bearer Authorization setup
我将其用于 Laravel Lumen,JWT 身份验证。
将此内容添加到中间件中的某个位置或基本控制器之类的其他位置
/**
* @OA\SecurityScheme(
* type="http",
* description="Login with email and password to get the authentication token",
* name="Token based Based",
* in="header",
* scheme="bearer",
* bearerFormat="JWT",
* securityScheme="apiAuth",
* )
*/
并将其添加到您的操作/功能中。
/**
* @OA\Get(
* path="/resources",
* summary="Get the list of resources",
* tags={"Resource"},
* @OA\Response(response=200, description="Return a list of resources"),
* security={{ "apiAuth": {} }}
* )
*/