【问题标题】:.Net Core - Multi Tenant Controller Overrides.Net Core - 多租户控制器覆盖
【发布时间】:2017-03-06 22:17:46
【问题描述】:

我希望将多租户添加到我正在开发的 .net 核心 MVC 应用程序中。

我的目标是拥有一个包含基本功能的核心项目,包括控制器、视图、资产等。

然后我希望每个租户有一个单独的项目,它可以覆盖核心项目的默认设置。目前我正在尝试解决覆盖控制器的任务,不仅仅是在控制器级别,而是在控制器中覆盖单个操作的能力。

我应该做什么,我在考虑 IControllerFactory 但不确定这是否是 .net 核心中的正确位置?

我假设通过 IoC 实现这一目标可能会有一段距离,但需要指出正确的方向。

有人对此有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-core asp.net-core-mvc multi-tenant saas


    【解决方案1】:

    这是我在当前项目中设计的方式,我的要求与您的要求略有不同,因为它是多租户但一个租户可以在多个国家/地区运营,每个租户的功能相同但每个国家/地区不同,希望下面的设计能给你一些想法,帮助你前进。

    我将控制器视为一种导航机制,让它们保持轻薄。我每个国家都有一个区域(在您的场景中,这可能是每个租户的一个区域)

    每个区域控制器只引用一个基本控制器

    基本控制器非常轻巧,因为我们希望能够使用我们的 DI 容器为每个国家/地区实现自定义逻辑。让我们通过编辑场景来获得许可。

    Intellisense 播放视图不应该是红色的 :)

    Edit permit 调用 _editPermitManager 类型的 IEditPermitManager 注入我们的控制器。我在系统中有两个实现,一个用于新西兰,因为它是一种特殊情况,另一个是所有其他国家/地区都使用的(但您可以轻松地为每个国家/地区实现一个)。

    我用 ninject 管理这个注入

    流程是用户导航到 /blah/NewZealand/Permit/Edit/4 点击提交,这被定向到新西兰的 Permit 控制器,因此 ninjects 注入新西兰编辑管理器,这在编辑流程中被调用,我也注入一个 INavigationService (_navigationService.Route) 使我能够潜在地指向每个国家/地区的不同视图。

    希望这能给你一个起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-25
      • 2018-11-13
      • 2021-03-20
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多