【问题标题】: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 创建一个条目
- 为用户分配组后,相关表应具有
UserDetails、UserGroups、UserRoles 等值
- 当我想查看我可以访问的产品列表时,我向
GetProducts API 发出请求。
- API 从身份验证过程、角色和组 ID 中获取我的用户 ID
- 现在,您必须使用键连接 products 表和
ProductPermissions 表,并按我分配的 groupid 进行过滤。
- 相同的逻辑适用于我所做的所有实体操作,任何操作都将根据
ProductPermissions 表进行验证。
注意
为了获得一个通用表而不是冗余ProductPermissions,您可以将表设置为EntityPermissions,然后将 entityId(例如:Product、Category 等)作为列,这将被使用加入期间的过滤器,以便您为所有实体提供一个表。