3

我正在使用 ASP.Net MVC 2 和 SQL Server 数据库实现 SaaS 应用程序。我正在使用共享租赁方法。

为了过滤数据,到目前为止,我找到了两种方法。

选项 1:http: //msdn.microsoft.com/en-us/library/aa479086.aspx#mlttntda_tvf

每个租户使用 sql 登录。因此,使用 SUSER_SID() 作为视图中的过滤器

选项 2:http: //blogs.imeta.co.uk/jyoung/archive/2010/03/22/845.aspx

在 Context_Info 中存储租户 ID。因此,使用从 Context_Info 中读取租户 ID 的 sql 函数作为视图中的过滤器。

你能帮我选择合适的选项吗?

谢谢,谢谢

4

2 回答 2

8

我认为这归结为安全模型之战。DBA 可能会坚持你做前者。我更务实,可能会将租户 ID 传递给我的 SP 或来自应用程序层的查询。

我会用大量的单元测试来支持这一点,以确保一个租户永远不会看到另一个租户的数据,并且我只会将当前租户存储在会话或类似的服务器上,永远不会存储在 cookie 或 URL 或其他任何地方可以在客户端被黑客入侵。

这使得添加新租户变得更加容易,因为不需要数据库配置。

当然,会话可能会被黑客入侵,因此您需要采取一切预防措施,以确保无论您在服务器上存储租户 ID,它都不会受到欺骗等的影响。

于 2010-08-11T16:19:27.553 回答
0

我要补充一点,内联表值函数在构建任何隔离层时也很有用。

于 2010-08-11T17:29:50.003 回答