在 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]))
的 then 替换为。ufn_RawData_[TableName]([UserName])
(出于安全原因,这样的调用可以由一个 sql 用户执行,该用户的唯一权限是对这些函数的 SELECT 权限。)
但是,这种方法对于最终用户来说可能太难了。我想知道最终用户是否有更容易/对用户更友好的解决方案来浏览选定的原始数据?