gpt4 book ai didi

asp.net-mvc-3 - ASP.NET MVC Multi-Tenancy 应用程序问题

转载 作者:行者123 更新时间:2023-12-04 16:44:54 24 4
gpt4 key购买 nike

我们目前正在开发一个 asp.net mvc3 (aspx) Multi-Tenancy 网站。我们在 web.config 中创建了一个租户配置部分,其结构如下:

<tenants>
<tenant name="client1" baseUrl="client1.domain.com">
<settings>
<setting name="siteName" value="client 1 site">
</settings>
</tenant>
<tenant name="client2" baseUrl="client2.domain.com">
<settings>
<setting name="siteName" value="client 2 site">
</settings>
</tenant>
</tenants>

在我们的代码中,我们或多或少有一个租户构建器,它从我们的 ITenant 接口(interface)创建具体类。

一旦我们能够解决问题,一切都会很好地呈现每个租户的网站。但是,我对做两件事的方式感到不舒服。 另请注意,当我们进行依赖注入(inject)时,我们没有使用第 3 方 IOC 容器(现在所有 DI 都是自定义的)。

  1. Controller 操作覆盖 - 目前我们的租户中有一些方法充当 Controller 操作覆盖(返回 ActionResult),这些方法在实际 Controller 操作中调用。例如 - 如果我们需要 Home/Index 的租户特定逻辑,我们会做这样的事情:返回 currentTenant.HomeIndex()。 我可以使用 ControllerFactory 或 ServiceLocator 而不是这样做吗?如果可以,有人可以解释解决此问题的最佳方法吗?

  2. 访问 - 现在我们的两个租户等同于:client1 = 免费用户,client2 = 付费用户。 虽然我们使用 MembershipProvider 来授权用户,但我们创建了一个 ActionFilter 来检查用户类型/级别并继续或重定向到适当的站点。有没有更智能的方法来进行这些检查?

提前致谢。

最佳答案

对于第一部分,你可以在 Action 声明处有一个额外的变量,即:

public ActionResult Index(Itenant tenant)

而不是 return currentTenant.HomeIndex() 你可以这样做

return Action("Index", new { tenant = currentTenant});

这会自动起作用。 (或者您可以跳过新的 {tenant.. } 部分,如果您喜欢冒险,可以使用自定义模型 Binder !)

第二部分,这实际上是更聪明的方法。如果您希望通过重定向进行自定义安全许可,则必须实现自定义过滤器。

关于asp.net-mvc-3 - ASP.NET MVC Multi-Tenancy 应用程序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com