【问题标题】:Cakephp 4: JWT Authorization fails in Browser, Postman worksCakephp 4:浏览器中的 JWT 授权失败,邮递员工作
【发布时间】:2021-10-21 23:34:11
【问题描述】:

我在将我的后端 CakePHP 应用程序从 CakePHP 3.9 迁移到 CakePHP 4 时遇到问题。 该应用程序用作我的sveltejs/sapper Javascript 应用程序的 API。

至于 JWT 身份验证,我使用的是 admad/cakephp-jwt-auth 插件。

应用程序之前迁移完美地从浏览器作为前端工作。 在 Postman 中测试我的 API 适用于 CakePHP 3 和 4 版本。

但是,

迁移之后,从浏览器 (sveltejs/sapper) 和需要身份验证的地方(包含 Bearer 令牌的Authorization 标头)发送的请求会导致错误:

错误 401“授权失败

我的 CORS 中间件(ozee31/cakephp-cors 插件)似乎也在工作,因为不需要授权的请求也可以按预期工作,也可以从浏览器中工作 - 拔出 CORS 中间件会导致浏览器中出现 CORS 错误请求。

另外,我的服务器正在填充$_SERVER['HTTP_AUTHORIZATION']

有没有人成功实现过类似的设置,尤其是在 CakePHP 4 和 HTTP_AUTHORIZATION 标头方面?

【问题讨论】:

  • 您是否调试过浏览器中发出的请求究竟是什么样的?如果没有,请检查浏览器的网络控制台并将请求(和响应)与 Postman 发出的请求(和响应)进行比较。还要检查您的 CakePHP 应用程序的错误/调试日志以获取更多信息,至少堆栈跟踪可能包含一些提示,告诉您错误触发的确切位置。

标签: php cakephp jwt cakephp-4.x


【解决方案1】:

我为 CakePHP 4 创建了一个自己的 JWT 插件,用作组件。

https://github.com/WireCore/CakePHP_JWT

它目前处于 alpha 阶段,但如果它解决了您的问题,您可以尝试。

您可以使用 composer composer require wirecore/cakephp_jwt 安装它并通过 $this->addPlugin('Wirecore/CakePHP_JWT'); 将其添加到您的 Application.php 中您可以在 README 中找到更多详细信息

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
猜你喜欢
  • 1970-01-01
  • 2018-03-27
  • 2018-11-25
  • 2021-06-24
  • 2020-07-23
  • 2020-07-10
  • 2020-02-16
  • 1970-01-01
  • 2020-05-18
相关资源
最近更新 更多