如何在 ASP.net 和 SQL 服务器中实现基于内容的授权?

How to implement content based authorization in ASP.net and SQL Server?

我正在为政府开发数据应用程序,我有一种情况需要在一个页面中将数据共享给所有用户,但具有不同的权限级别,可以根据位置控制授权,而不仅仅是简单的管理员和viewers or editors roles.For 例如,我有 Locations Table,它以分层模式包含区域、城市和地区,页面上显示的所有数据都会受到此位置更改的影响,然后用户who is authorized for a city can only see data related to the city and users can be authorized for multiple cities and multiple datasets within the page,如果我们在记录中维护用户,那么我们需要记录数乘以授权位置所有乘以授权数据集这可以是 infinity.So 为与特定位置相关的每条数据记录存储这些用户角色的最佳做法是什么?

我会首先查看行级安全性。它允许您设置安全策略,允许不同的行可用于不同的 groups/users.

Microsoft 的主题从这里开始:https://docs.microsoft.com/en-us/sql/relational-databases/security/row-level-security

Plural Site 上还有一个很好的教程。

我会 post 一些例子,但这个主题太宽泛了,无法在这里回答。

需要注意一点 - 行级安全性存在性能限制。

如果安全性不是那么重要,那么映射 table 和一些巧妙的连接是一种流行的方式,而且比行级安全性快得多 - 具体取决于您的数据大小。