多租户 ASP.NET 核心

Multi tenancy ASP.NET core

我正在尝试构建 ASP.NET 核心 api 我有几个用户组。这些组有一个公共数据库,但从那里他们只能看到分配给他们的记录。

例如 用户 XYZ 调用控制器返回产品 table 的值只能看到分配给他的组的那些。同样他添加一个新的Product,只有他所在组的用户看到,其他组不知道这个Product的存在。

我想请您向我解释如何在 ASP.NET 核心中执行此操作,我可以使用哪些库,因为不幸的是我不知道如何执行此操作。

预先感谢您的帮助。

我认为你不需要搜索库或框架来构建它,你可以按如下方式实现,

  • 创建一个 table,读作 ProductPermissions
  • 在此table
  • 中为recordid、groupid、roleid创建一个条目
  • 为用户分配群组后,相关的 table 应具有 UserDetailsUserGroupsUserRoles 等值
  • 当我想查看我可以访问的产品列表时,我向 GetProducts API 发出请求。
  • API 从身份验证过程中获取我的用户 ID、角色和组 ID
  • 现在,您必须使用密钥加入产品 table 和 ProductPermissions table,并按我分配的组 ID 进行过滤。
  • 相同的逻辑适用于我所做的所有实体操作,任何操作都将根据 ProductPermissions table.
  • 进行验证

备注

为了获得比冗余 ProductPermissions 更通用的 table,您可以将 table 作为 EntityPermissions,然后使用实体 ID(例如:ProductCategory 等)作为一列,在加入期间将用作过滤器,以便所有实体都有一个 table。