考虑到 abp 的概念,这不是问题,而是关于什么是更好的方法的问题或建议。在我的例子中,有不同类型的角色与一些核心实体交互。说吧。
实体:
MedicalClaim : FullAuditedEntity
PharmacyClaim : FullAuditedEntity
票证:FullAuditedEntity
角色:
行政
经理
审计师
保险公司
专业记账员
药剂师
医院账单
医师(用户)
与已定义实体的真正交互是角色到角色,例如。MedicalClaim 由 ProfessionalBiller 或 Physician 向保险公司收取费用。用户属于公司或个人医生。Manager、Admin 和 Auditor 是上一级用户。
多点 = 真 如果使用多租户方法,我如何区分 ABP 中不同类型的租户,因为每个租户都不是同一种客户,我需要租户之间的交互。在这种情况下,Admin、Manager 和 Auditor 将是 HOST 用户,因此他们可以管理租户和与租户相关的实体(医疗索赔和票据)。如何设置自动过滤以便每个租户都可以看到“自己的”实体,如果 PharmacyBiller 向 Insurer 开具账单,则应该在两种情况下都进行过滤,首先是 PharmacyBiller (FROM) 用户进入系统时,以及 Insurer (TO) 进入系统时。使用多租户我们可以获得所有好处(功能、版本),因此例如不需要为每个角色复制权限。前任。PharmacyBiller (CAN_CREATE_CLAIM) 和 ProfessionalBiller (CAN_CREATE_CLAIM) 并通过功能区分什么样的角色 ("
MULTITENACY = FALSE 如果我们不使用多租户,我们就会失去与多租户相关的所有概念,并且会出现大量重复代码,但也许我们可以通过定制开发获得更大的灵活性。这里的替代方法是使用 OrganizationUnit、OrganizationUnitRole 和权限,并将每个角色视为一个 OrganizationUnit 以进行过滤。在这里,每次我们在内部创建 Role 的任何实例时,我们都需要创建一个 OrganizationUnit,以便 EntityId 的源可以是唯一的,以避免每个角色使用大量 null 污染 User 实体。
我认为这是这里在 aspnetboilerplate/zero 上提到的一个非常常见的场景,欢迎社区或支持团队提供一些提示(即使有意义,也要知道某些解决方案的缺点)