Пользователь ASP.NET просматривает выбранные/ограниченные необработанные данные из SQL-Server

StackOverflow https://stackoverflow.com/questions/1706306

  •  19-09-2019
  •  | 
  •  

Вопрос

В приложении 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, чей Только Разрешения выбирают разрешения на эти функции.)

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top