问题标签 [multi-tenant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1201 浏览

asp.net - 如何创建和管理多租户 ASP MVC 应用程序

我想创建一个使用主机名来确定客户的多租户应用程序。

例如:

CustomerOne.myapp.com AnotherCo.myapp.com AndOneMore.myapp.com ...

我可以毫无问题地做数据库和安全方面,我也可以从 URL 中获取主机名,但我正在努力寻找的是如何创建允许新客户在线注册的基本管道,提供他们的公司名称,并为应用程序创建新的 URL,可以立即使用。

任何人都可以帮忙吗?

谢谢,

抢。

0 投票
2 回答
438 浏览

asp.net - 如何使用自定义 HttpHandler 重写路径

我正在编写一个多租户应用程序,它将接收http://www.tenant1.com/content/images/logo.gifhttp://www.anothertenant.com/content/images/logo.gif. 我希望请求实际映射到文件夹位置/content/tenant1/images/logo.gif/content/anothertenant/images/logo.gif

我正在使用 asp.net Mvc 2,所以我确定可能有一种方法可以设置路由来处理此问题或自定义路由处理程序?有什么建议么?

谢谢!

0 投票
4 回答
1504 浏览

symfony1 - 使用 Doctrine 的 Symfony 多租户应用程序中的数据分离

我正在尝试实现一个多租户应用程序,即-单个数据库中所有客户端的数据-每个共享表都有一个tenant_id用于分隔数据的字段

我希望通过向所有 SELECT 查询添加 {pseudoc-code} 来实现数据分离where('tenant_id = ', $user->getTenantID()),但我事先找不到任何解决方案,但这里有一些我正在考虑的可能方法。1)粗略的方法:在每个类中自定义所有fetchAllfetchOne函数(我会发疯的!) 2)使用侦听器:可能为preDqlSelect事件编码并将“位置”添加到所有查询 3)覆盖buildQuery():找不到示例这用于前端 4) 实现contentformfilter:再次需要一个指针

如果有人可以验证这些并评论效率,适用性,将不胜感激。另外,如果有人使用另一种策略实现了多租户,请分享。谢谢

0 投票
1 回答
1401 浏览

c# - asp.net MVC 多租户:有没有办法覆盖/影响 User.Identity.IsAuthenticated?

我有一个自定义成员资格提供程序,它为我们提供了很好的 asp.net 网络表单应用程序,现在我在一个新的 asp.net MVC 多租户应用程序中使用它。

成员资格提供程序在 MVC 中运行良好,就像在 webforms 中一样,但现在想要添加一个额外的约束,我们可以在其中检查用户是否已针对特定“租户”进行了身份验证和身份验证。我们目前正在根据 URL 跟踪当前的“TenantID”并检测对 URL 的任何更改,而不仅仅是检查 User.Identity.IsAuthenticated,我们在 Controller 和 View 基类中有类似的东西。

我们如何覆盖/替换 User.Identity.IsAuthenticated 以便我们可以直接使用它?

对以上内容有任何建议或意见欢迎...

0 投票
1 回答
1105 浏览

sql-server - SaaS 多租户应用程序:如何实施数据导入/导出/备份?

应用程序如何在基于 SaaS 的多租户应用程序中提供数据导入/导出(或备份),尤其是单一数据库设计?

进口:

保持简单,我认为基本导入很有用,即 CSV 到规范(或提供 CSV 列和数据库中字段之间的映射的一种方式。

出口:

在单一数据库设计中,我见过 XML 导出和 HTML(基本生成的)数据导出吗?我会假设 XML 是一个更好的选择?如何满足关系数据的需求?您会在 XML 中引用各种内容并提供关系文档还是让用户弄清楚这一点?

供应商是否提供可以导入/恢复的导出/备份?

您的意见表示赞赏。

0 投票
1 回答
606 浏览

c# - 在 ASP.NET MVC 应用程序中管理多个客户数据库

我正在构建一个应用程序,该应用程序需要为每个客户提供单独的 SQL Server 数据库。

为此,我需要能够创建一个新的客户文件夹,将原型数据库的副本放在文件夹中,更改数据库的名称,并将其作为新的“数据库实例”附加到 SQL Server。原型数据库包含所有必需的表、字段和索引定义,但没有数据记录。我将使用 SMO 来管理附加、分离和重命名数据库。

在创建原型数据库的过程中,我尝试使用 Sql Server Management Studio 将数据库(伴侣 .MDF、.LDF 对)的副本附加到 SQL Server,并发现 SSMS 期望数据库驻留在

这是 SQL Server 的“功能”吗?有没有办法在单独的目录中管理单个数据库?还是我必须将所有客户数据库放在同一个目录中?(我希望有比这更好的控制)。

注意:我目前使用的是 SQL Server Express,但仅​​用于测试目的。生产数据库将是 SQL Server 2008 企业版。所以“用户实例”不是一个选项。

0 投票
3 回答
2899 浏览

php - 是否有任何 PHP 框架(例如 CodeIgniter)支持基于每个用户帐户的数据库连接,以便在多租户数据库中使用?

我正在研究开发一个多租户 SaaS 应用程序,我发现几个站点描述了一种使用tenantID 和可更新视图分离数据的可靠方法。例如这篇博文

这一切都取决于让您的用户帐户从主用户表进行身份验证的能力,然后让他们各自的数据库连接使用这些用户特定的凭据。这样,视图可以提取用户 ID 并将其映射到租户 ID 以显示该用户的视图。然而,当涉及到数据库连接(存储在文本配置文件中)时,大多数 PHP 框架往往是非常静态的。他们似乎意见不合。

有谁知道:a)如何让 CodeIgniter 优雅地处理这个问题?b) 一个不同的 PHP 框架可能吗?

0 投票
2 回答
1434 浏览

email - SaaS/多租户应用程序如何实现电子邮件通知(发送和接收)?

给定多租户应用程序,供应商如何从电子邮件帐户设置和编程角度实施电子邮件通知:

发送电子邮件可以来自通用帐户:例如,notifications@VendorName.com 或 noreply@VendorName.com,考虑到电子邮件内容中可以包含回复地址和链接,这似乎是合理的。

接收电子邮件:例如,应用程序将如何接收电子邮件;生成支持票或在电子邮件中为项目/任务分配评论。我在主题中看到了 ID 和一些包含帐户名称的地址的回复,例如:notifications@AccountName.VendorName.com

我意识到可以以编程方式连接到 pop3 服务器并接收电子邮件并查找带有主题的 ID,但是有没有一种方法可以从多个子主机名电子邮件地址设置和接收单个pop3 帐户的电子邮件(不确定术语)例如:noreply@AccountName1.VendorName.com 或 noreply@AccountName2.VendorName.com 并检查地址中的帐户名称?(类似于检查 URL 上的子域)

有什么做法、经验、意见或建议吗?

(不确定它的相关性,但使用 C# asp.net-mvc 和服务等)

0 投票
1 回答
7455 浏览

multi-tenant - 多租户和多用户解决方案有什么区别?

我相信我在硬件方面理解这一点,多个人为他们的解决方案“共享”相同的处理和内存。但我一直在看 gmail 和 facebook,这些是多租户解决方案吗?是不是只要我的解决方案可以支持多个用户,它就是多租户的?

0 投票
2 回答
3018 浏览

asp.net-mvc - 多租户访问控制:存储库还是服务层?

在基于 Rob Conery 的 MVC Storefront 的多租户 ASP.NET MVC 应用程序中,我应该过滤存储库服务层中的租户数据吗?

1. 过滤仓库中租户的数据:

2.让服务按租户过滤存储库数据:

我的直觉是在服务层(选项 2)中执行此操作,但可以说每个租户本质上都应该拥有自己的“虚拟存储库”(选项 1),而这个责任在于存储库。

  • 哪种方法最优雅:选项 1、选项 2 还是有更好的方法?

更新:

我尝试了在存储库中过滤的建议想法,但问题是我的应用程序提供了租户上下文(通过子域)并且只与服务层交互。将上下文一直传递到存储库层是一项任务。

因此,我选择在服务层过滤我的数据。我认为存储库应该代表存储库中物理可用的所有数据,并使用适当的过滤器来检索特定于租户的数据,以供服务层使用。

最终更新:

由于不必要的复杂性,我最终放弃了这种方法。请看下面我的回答。