Domanda

In un'applicazione ASP.NET WebForms vorrei permettere all'utente finale di navigare i dati grezzi selezionati in un database SQL-server.

Tuttavia, vorrei limitare l'accesso per l'utente di visualizzare solo alcuni dei dati in base al nome utente.

Non sono sicuro di come fare questo in un modo che è possibile per l'utente di capire, dal momento che SQL non è necessariamente noto per l'utente.

Quali opzioni ho qui?


Come base per questo ho preso in considerazione la creazione di una funzione SQL per ogni tabella in questione. Tale funzione dovrebbe restituire i dati che l'utente è autorizzato a vedere, per es.,

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

In una pagina web l'utente finale potrebbe quindi digitare un'istruzione SQL-like come

SELECT Name, HireDate FROM ((Employee))

dove (([TableName])) quindi potrebbe essere sostituito da ufn_RawData_[TableName]([UserName]) prima di chiamare il database. (Per ragioni di sicurezza tali chiamate potrebbero quindi essere eseguite da un utente di SQL cui solo permessi sono autorizzazioni SELECT a queste funzioni.)

Tuttavia, questo approccio potrebbe essere troppo difficile per l'utente finale. Vorrei sapere se una soluzione più facile / user-friendly esiste per l'utente finale di sfogliare i dati grezzi selezionati?

È stato utile?

Soluzione

Se si sta mostrando solo i dati utente da una tabella, o un punto di vista (che probabilmente sarebbe più utile) allora sì è possibile memorizzare il nome di quella vista in una tabella e recuperare con una funzione. È quindi possibile visualizzare i dati in pagine, e assicurarsi che il proprio script selezionare Standard hanno un costruito in funzione di ricerca, se necessario.

Non è necessario per l'utente di scrivere SQL se sono solo ottenendo i dati da una tabella o vista. Se è necessario fornire più potenziali tabelle / viste, poi far loro scegliere da un menu a discesa, ma non suona utile per consentire loro di scrivere le proprie query SQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top