在招摇的Laravel中使用JWT Bearer令牌

时间:2018-05-30 23:22:44

标签: laravel jwt swagger

我正在使用DarkaOnLine的L5-swagger作为我的项目。我想在我的文档中使用JWT Auth。我添加了这段代码:

/**
  @OAS\SecurityScheme(
      securityScheme="API Key Auth",
      type="apiKey",
      in="header",
      name="Authorization",
  )
 **/

在swagger UI中,"授权"显示按钮,并有一个表单来填充令牌。但是在我输入之后,我仍然得到了#34; token_not_provided"函数中的错误,需要令牌才能访问它。

提前致谢。

3 个答案:

答案 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": {} }}
 * )
 */