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