【问题标题】:How to secure communication between Laravel and Lumen?如何保护 Laravel 和 Lumen 之间的通信?
【发布时间】:2017-09-11 21:34:09
【问题描述】:

Laravel 后端将使用 Guzzle 通过 API 访问 Lumen。

我不需要 Lumen 中的数据库,那么如何在 Laravel 和 Lumen 之间添加安全性?据我所知,如果我需要传递令牌,我会在 Lumen 中访问数据库。

Lumen 仅供内部使用,不对外开放。

【问题讨论】:

  • 所以 Lumen 是你的前端,而 Laravel 是你的后端?还是它们是完全独立的 API?
  • Laravel 用于前端+后端(管理面板),Lumen 用于 API 用于其他用途。

标签: php laravel api lumen


【解决方案1】:

我会这样做:

  • 在你的 laravel 安装的 .env 中存储一个密钥,命名为 LUMEN_API_TOKEN
  • 在 Lumen 侧做同样的事情
  • 在 Lumen 端创建 API 端点,如其文档中所述
  • 使用令牌身份验证,对连接到 Lumen 端点的任何客户端进行身份验证。连接器提供的key,需要等于LUMEN_API_TOKEN
  • 对于令牌身份验证,您可以使用标头密钥,或者只是一个 GET 参数...类似于http://your_Lumen_site/endpoint?token=12345
  • 在 Laravel 上使用 Guzzle 连接到 Lumen

【讨论】:

  • 这是个好建议。如果我决定使用标头键 - 我假设我需要在 Lumen 中创建一个中间件来验证每个请求的标头上的令牌?
  • 会有很多用户吗?然后我会选择 JWT 解决方案。否则我会保持简单,在控制器操作(或中间件,如果你想更清洁)中快速处理它......但始终使用 HTTPS。
  • 我希望有成千上万的用户。用户通常会登录到管理面板 - 我需要使用 Laravel Auth(会话)的用户名和密码。然后控制器将使用 Guzzle 调用 Lumen。 JWT 还会更好吗?
  • 据我了解,Laravel 和 Lumen 之间的联系是内部的。所以你不需要 JWT ......只需准备一些带有 HTTPS 连接的固定共享密钥,在我的回答中简单解释......
【解决方案2】:

您可以在 Laravel 应用程序上创建 JWT 密钥并在 Lumen 应用程序上对其进行身份验证。 Lumen 应用程序只需要密钥来解密和验证令牌。不需要数据库。

我会推荐这个JWT Library,它与 Laravel 和 Lumen 配合得很好

【讨论】:

  • 嗯。我需要只在 Laravel 上安装 JWT 包还是两者都安装?如果 Laravel 上有 JWT 包,Lumen 如何解密密钥。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 1970-01-01
  • 2019-11-23
  • 2018-01-08
相关资源
最近更新 更多