我正在使用 ASP.Net MVC 2 和 SQL Server 数据库实现一个 SaaS 应用程序。我正在使用共享租赁方法。
要过滤数据,目前我找到了两种方法。
选项 1:http://msdn.microsoft.com/en-us/library/aa479086.aspx#mlttntda_tvf
对每个租户使用 sql 登录。因此,在 View 中使用 SUSER_SID() 作为过滤器
选项 2:http://blogs.imeta.co.uk/jyoung/archive/2010/03/22/845.aspx
在 Context_Info 中存储租户 ID。因此,使用从 Context_Info 中读取租户 ID 的 sql 函数作为 View 中的过滤器。
您能帮我选择合适的选项吗?
谢谢 谢谢
最佳答案
我认为这可以归结为安全模型之战。 DBA 可能会坚持你做前者。我比较务实,可能会将租户 ID 传递给我的 SP 或来自应用层的查询。
我会通过大量单元测试来支持这一点,以确保一个租户永远不会看到另一个租户的数据,并且我只会将当前租户存储在 session 或类似的服务器上,而不是存储在 cookie 或 URL 中,或任何其他可以在客户端被黑的地方。
这使得添加新租户变得更加容易,因为不需要数据库配置。
当然, session 可能会被黑客入侵,因此您需要采取一切预防措施,以确保无论您在服务器上存储租户 ID,它都不会受到欺骗等的影响。
关于sql-server - 在 Multi-Tenancy 数据架构中,实现租户过滤 View 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3460501/