如何在ASP.NET样板中实现行级安全性?

时间:2018-11-23 18:13:46

标签: asp.net sql-server multi-tenant aspnetboilerplate row-level-security

一个月前我开始使用ASP.NET Boilerplate,所以这是一个初学者级的问题。我觉得这是一个很棒的框架-非常感谢您创建和共享此框架。

我正在开发一个多租户应用程序,现在我想根据租户过滤行。在ASP.NET Boilerplate中执行此操作的正确方法是什么?我正在考虑在每个数据库调用中传递TenantId或创建一个包含所有详细信息的请求上下文,并将其传递给方法调用。然后,在方法中,检查特定行的TenantId是否与我们传递的内容匹配。如果不是,则丢弃,否则继续。通过四处调整,我可能会实现我想要的,但是我想知道在ASP.NET Boilerplate中执行此操作的正确方法是什么。

第二个将SQL Server的行级安全性功能集成到ASP.NET Boilerplate中的现成示例吗?

非常感谢。

1 个答案:

答案 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