0

在 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 权限。)

但是,这种方法对于最终用户来说可能太难了。我想知道最终用户是否有更容易/对用户更友好的解决方案来浏览选定的原始数据?

4

1 回答 1

1

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

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

于 2009-11-10T08:22:51.873 回答