【问题标题】:Multi tenancy ASP.NET core多租户 ASP.NET 核心
【发布时间】:2021-03-11 23:26:35
【问题描述】:

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

例如用户 XYZ 调用控制器返回 Products 表中的值,只能看到分配给他的组的值。同样的,当他添加一个新产品时,只有他所在组的用户可以看到,其他组不知道这个产品的存在。

我想请你给我解释一下如何在 ASP.NET core 中做到这一点,我可以使用哪些库,因为不幸的是我不知道该怎么做。

提前感谢您的帮助。

【问题讨论】:

    标签: authentication authorization asp.net-core-webapi multi-tenant


    【解决方案1】:

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

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

    注意

    为了获得一个通用表而不是冗余ProductPermissions,您可以将表设置为EntityPermissions,然后将 entityId(例如:ProductCategory 等)作为列,这将被使用加入期间的过滤器,以便您为所有实体提供一个表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 2012-01-21
      • 1970-01-01
      相关资源
      最近更新 更多