首页 > 解决方案 > 具有多个身份验证提供程序和守卫的多租户应用程序

问题描述

使用 Laravel 和 3rd 方 API 开始一个新的应用程序,在我深入研究之前,我想确保我在架构等方面处于“正确的道路”

该应用程序将包含 4 种用户类型:

来宾可以被忽略,因为没有围绕该用户类型的身份验证。

管理员将是“我们”——产品所有者。我们将使用标准的 Laravel 用户身份验证和保护,并将凭据存储在本地数据库中。管理员将能够管理企业主帐户及其设置等。

每个“企业”都有自己的 API。当“业务”用户访问路由时,路由的业务 ID 将用于从本地数据库检索 API 详细信息,并向业务 API 发出 GuzzleHTTP 请求以获取/发布数据。我已经对应用程序的这方面进行了原型设计。路由将按路由前缀分组,因此:domain.com/{business_id}/some-other-end-point-> 其中 'business_id' 是本地数据库中业务的唯一 ID。

我现在正在原型设计的部分是针对企业所有者和企业客户的企业 API 的登录和身份验证。

我的假设——也是问题的症结所在——是我应该基本上创建一组模仿标准 Laravel 用户提供者的新警卫和提供者,一个用于我的两个自定义用户角色中的每一个。本质上,采用此处概述的代码并将 API 调用插入其中:https ://laravel.com/docs/8.x/authentication#adding-custom-user-providers

我对这种方法的担忧是,如果每次调用中间件对用户进行身份验证时都调用了针对 API 验证用户的调用,那么 API 会消耗多少数据。

有什么我遗漏的东西,还是一种“更简单”的方法来管理这个?有人做过类似事情的在线示例 - 有第二个身份验证提供程序连接到非标准/非本地数据存储?

标签: laravel

解决方案


推荐阅读