【发布时间】:2018-12-24 00:38:18
【问题描述】:
我正在使用 Laravel 5.6 和 jwt-auth 进行 API 身份验证。其背后的想法很简单:
- 您发送带有用户凭据的 HTTP POST 请求,如果成功,将获得“access_token”。
- 每个后续请求都应使用标头“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,
],
如何在不显式传递访问令牌的情况下使用 JWT (tymondesigns/jwt-auth) 并向我自己的应用程序 API 发出请求?
【问题讨论】:
-
如果不是访问令牌,你会传递什么?目前尚不清楚您将如何进行身份验证。此外,使用 OAuth 2.0 / OpenID Connect 进行授权/身份验证使得通过移动应用程序、JS 应用程序等使用 API 变得微不足道,因为它总是相同的 - 传递访问令牌,工作完成。老实说,我不确定到底出了什么问题。