在ASP.NET WebForms应用程序中,我想允许最终用户在SQL-Server数据库中浏览所选的原始数据。

但是,我想限制用户仅根据用户名查看某些数据的访问。

我不确定如何以用户理解的方式做到这一点,因为用户不一定知道SQL。

我在这里有什么选择?


作为此的基础,我考虑了每个表中的每个表创建一个SQL函数。该功能应返回允许用户查看的数据,例如

CREATE FUNCTION ufn_RawData_Employee(@username nvarchar(256))
RETURNS TABLE
AS ( SELECT * FROM Employee 
  WHERE [@username is allowed to view the given Employee] )

在网页中,最终用户可能会键入类似SQL的语句

SELECT Name, HireDate FROM ((Employee))

在哪里 (([TableName])) 然后可以取代 ufn_RawData_[TableName]([UserName]) 在调用数据库之前。 (出于安全原因,可以由SQL用户执行此类呼叫 只要 权限是这些功能的选择权限。)

但是,对于最终用户而言,这种方法可能太困难了。我想知道,最终用户是否存在更轻松/用户朋友的解决方案,可以浏览所选的原始数据?

有帮助吗?

解决方案

如果您仅从一个表中显示用户数据,或一个视图(可能更有用),则可以将该视图的名称存储在表中并使用函数检索。然后,您可以在页面中显示数据,并确保您的标准选择脚本在必要时具有内置的搜索功能。

如果用户仅从一个表或视图获取数据,则无需编写SQL。如果您需要提供多个潜在的表/视图,那么让他们从下拉菜单中进行选择,但是听起来不值得允许他们编写自己的SQL查询。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top