一个月前我开始使用ASP.NET Boilerplate,所以这是一个初学者级的问题。我觉得这是一个很棒的框架-非常感谢您创建和共享此框架。
我正在开发一个多租户应用程序,现在我想根据租户过滤行。在ASP.NET Boilerplate中执行此操作的正确方法是什么?我正在考虑在每个数据库调用中传递TenantId
或创建一个包含所有详细信息的请求上下文,并将其传递给方法调用。然后,在方法中,检查特定行的TenantId
是否与我们传递的内容匹配。如果不是,则丢弃,否则继续。通过四处调整,我可能会实现我想要的,但是我想知道在ASP.NET Boilerplate中执行此操作的正确方法是什么。
第二个将SQL Server的行级安全性功能集成到ASP.NET Boilerplate中的现成示例吗?
非常感谢。
答案 0 :(得分:0)
我正在开发一个多租户应用程序,现在我想根据租户过滤行。在ASP.NET Boilerplate中执行此操作的正确方法是什么?我正在考虑在每个数据库调用中传递
TenantId
或创建一个包含所有详细信息的请求上下文,并将其传递给方法调用。然后,在方法中,检查特定行的TenantId
是否与我们传递的内容匹配。如果不是,则丢弃,否则继续。
这是ASP.NET Boilerplate的内置功能,通过EF Core的Global Query Filters实现。
更多信息:https://aspnetboilerplate.com/Pages/Documents/Multi-Tenancy#data-filters
第二个将SQL Server的行级安全性功能集成到ASP.NET Boilerplate中的现成示例吗?
否,所有数据库调用均由连接字符串确定的同一受信任数据库用户进行。
您可能误解了Row-Level Security。
您可以根据应用程序用户传递不同的连接字符串,但这仅仅是应用程序级授权-也是内置的,通过Castle Windsor的Interceptors实现。
更多信息:https://aspnetboilerplate.com/Pages/Documents/Authorization