Пользователь ASP.NET просматривает выбранные / ограниченные необработанные данные с sql-сервера - PullRequest
0 голосов
/ 10 ноября 2009

В приложении ASP.NET WebForms я хотел бы разрешить конечному пользователю просматривать выбранные необработанные данные в базе данных sql-сервера.

Однако я хотел бы ограничить доступ пользователя к просмотру только некоторых данных на основе имени пользователя.

Я не уверен, как сделать это так, чтобы пользователь мог понять, так как 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, чьи разрешения only являются разрешениями SELECT для этих функций.)

Однако такой подход может быть слишком сложным для конечного пользователя. Я хотел бы знать, существует ли более простое / удобное для пользователя решение для конечного пользователя для просмотра выбранных необработанных данных?

1 Ответ

1 голос
/ 10 ноября 2009

Если вы показываете данные пользователя только из одной таблицы или из одного представления (что, вероятно, будет более полезным), тогда да, вы можете сохранить имя этого представления в таблице и получить его с помощью функции. Затем вы можете отобразить данные на страницах и убедиться, что ваши стандартные сценарии выбора имеют встроенную функцию поиска, если это необходимо.

Пользователю не нужно писать SQL, если он получает данные только из одной таблицы или представления. Если вам нужно предоставить несколько потенциальных таблиц / представлений, то пусть они выбирают из выпадающего списка, но не стоит давать им возможность писать свои собственные SQL-запросы.

...