Pergunta

Em um aplicativo WebForms ASP.NET, gostaria de permitir que o usuário final navegue dados brutos selecionados em um banco de dados SQL-SERVER.

No entanto, gostaria de restringir o acesso ao usuário para visualizar apenas alguns dos dados com base no nome de usuário.

Não tenho certeza de como fazer isso de uma maneira possível para o usuário entender, pois o SQL não é necessariamente conhecido pelo usuário.

Que opções eu tenho aqui?


Como base para isso, considerei criar uma função SQL por tabela em questão. Essa função deve retornar os dados que o usuário pode visualizar, por exemplo,

CREATE FUNCTION ufn_RawData_Employee(@username nvarchar(256))
RETURNS TABLE
AS ( SELECT * FROM Employee 
  WHERE [@username is allowed to view the given Employee] )

Em uma página da web, o usuário final pode então digitar uma declaração do tipo SQL como

SELECT Name, HireDate FROM ((Employee))

Onde (([TableName])) então pode ser substituído por ufn_RawData_[TableName]([UserName]) antes de ligar para o banco de dados. (Por razões de segurança, essas chamadas poderiam ser executadas por um usuário do SQL cujo As permissões são permissões selecionadas para essas funções.)

No entanto, essa abordagem pode ser muito difícil para o usuário final. Gostaria de saber se existe uma solução mais fácil/mais fácil de usar para o usuário final procurar dados brutos selecionados?

Foi útil?

Solução

Se você estiver mostrando apenas os dados do usuário de uma tabela ou uma visualização (que provavelmente seria mais útil), sim, você poderá armazenar o nome dessa exibição em uma tabela e recuperá -la com uma função. Você pode exibir os dados nas páginas e garantir que seus scripts de seleção padrão tenham uma função de pesquisa embutida, se necessário.

Não há necessidade de o usuário escrever SQL se estiver obtendo apenas dados de uma tabela ou visualização. Se você precisar fornecer várias tabelas/ visualizações em potencial, deixe -as escolher entre uma suspensão, mas não parece valer a pena permitir que eles escrevam suas próprias consultas SQL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top