【问题标题】:Laravel JWT - Consuming your own API with JavascriptLaravel JWT - 使用 Javascript 使用你自己的 API
【发布时间】:2018-12-24 00:38:18
【问题描述】:

我正在使用 Laravel 5.6 和 jwt-auth 进行 API 身份验证。其背后的想法很简单:

  1. 您发送带有用户凭据的 HTTP POST 请求,如果成功,将获得“access_token”。
  2. 每个后续请求都应使用标头“Authorization: Bearer {access_token}”发送。

如果消费者来自外部(例如 Android 应用),此步骤既酷又灵活。

但是如果 API 使用者是我自己的 JavaScript 呢?即使在我的网络中间件中已经知道经过身份验证的用户,我是否也应该在启动每个异步请求时登录?人们通常如何处理这个问题?

通过 Passport (OAuth2.0),Laravel 提供了一个中间件,该中间件可以注入带有授权令牌的 cookie,使此过程自动化且简单:

通常,如果您想从 JavaScript 应用程序使用 API,则需要手动向应用程序发送访问令牌,并将其与每个请求一起传递给您的应用程序。但是,Passport 包含一个可以为您处理此问题的中间件。您需要做的就是将CreateFreshApiToken 中间件添加到您的app/Http/Kernel.php 文件中的Web 中间件组中:

'web' => [
    // Other middleware...
    \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],

Read more.

如何在不显式传递访问令牌的情况下使用 JWT (tymondesigns/jwt-auth) 并向我自己的应用程序 API 发出请求?

【问题讨论】:

  • 如果不是访问令牌,你会传递什么?目前尚不清楚您将如何进行身份验证。此外,使用 OAuth 2.0 / OpenID Connect 进行授权/身份验证使得通过移动应用程序、JS 应用程序等使用 API 变得微不足道,因为它总是相同的 - 传递访问令牌,工作完成。老实说,我不确定到底出了什么问题。

标签: php laravel jwt


【解决方案1】:

如果您想通过基于 Javascript 的网站访问此 API,您需要将此访问令牌保存在本地存储中。然后对于每个请求,将此访问令牌发送到您的 API 以检查此令牌的有效性。

此外,如果您的 API 和基于 Javascript 的网站在同一个域中,只需使用常规方式进行身份验证。

【讨论】:

    猜你喜欢
    • 2017-01-22
    • 2017-06-04
    • 2015-04-05
    • 1970-01-01
    • 2016-03-11
    • 2022-12-15
    • 2022-01-03
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多