laravel - 具有多个身份验证提供程序和守卫的多租户应用程序
问题描述
使用 Laravel 和 3rd 方 API 开始一个新的应用程序,在我深入研究之前,我想确保我在架构等方面处于“正确的道路”
该应用程序将包含 4 种用户类型:
- 访客 - 未经身份验证的用户
- 管理员 - Laravel 认证用户
- 企业主 - API 认证的企业主
- 商业客户 - API 认证的商业客户
来宾可以被忽略,因为没有围绕该用户类型的身份验证。
管理员将是“我们”——产品所有者。我们将使用标准的 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 会消耗多少数据。
有什么我遗漏的东西,还是一种“更简单”的方法来管理这个?有人做过类似事情的在线示例 - 有第二个身份验证提供程序连接到非标准/非本地数据存储?
解决方案
推荐阅读
- c# - 来自 Unity 的发布请求未在 php 中接收
- java - 如何在 Java 中的某个时间段内遍历每个 hh:00?
- python - 使用 statsmodel OLS 方法拟合数据时出现值错误
- postgresql - AWS / 我如何获取在 ec2 实例上运行的数据库记录并将它们发送到 kinesis?
- rest - 使用多个用户来避免通过 SharePoint REST API 限制批量操作?
- java - 找不到 16-jre-slim Docker 映像
- graphql - 如何禁用 GraphQL 突变/查询名称建议?
- html - 为什么生成的 PDF 中的页数不正确?
- sql - SQL Server:连接数据但在单行中
- push-notification - 在 c# 框架 4.6 中使用 winhttphandler 的 apns 不起作用