Frage

In einer ASP.NET-Webform-Anwendung möchte ich dem Endbenutzer ermöglichen, ausgewählte Rohdaten in einer SQL-Server-Datenbank zu durchsuchen.

Ich möchte jedoch den Zugriff einschränken, damit der Benutzer nur einige Daten basierend auf dem Benutzernamen anzeigen kann.

Ich bin mir nicht sicher, wie ich dies auf eine Weise tun soll, die dem Benutzer möglich ist, da SQL dem Benutzer nicht unbedingt bekannt ist.

Welche Optionen habe ich hier?


Als Grundlage dafür habe ich darüber nachgedacht, eine SQL -Funktion pro fraglicher Tabelle zu erstellen. Diese Funktion sollte die Daten zurückgeben, die der Benutzer anzeigen darf, z. B., z. B.

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

In einer Webseite kann der Endbenutzer dann eine SQL-ähnliche Anweisung wie möglich eingeben

SELECT Name, HireDate FROM ((Employee))

wo (([TableName])) dann könnte durch ersetzt werden durch ufn_RawData_[TableName]([UserName]) Vor dem Aufrufen der Datenbank. (Aus Sicherheitsgründen könnten solche Anrufe dann von einem SQL -Benutzer durchgeführt werden, dessen nur Berechtigungen sind ausgewählte Berechtigungen für diese Funktionen.)

Dieser Ansatz könnte jedoch für den Endbenutzer zu schwierig sein. Ich würde gerne wissen, ob eine einfachere/benutzerfreundliche Lösung für den Endbenutzer vorhanden ist, um ausgewählte Rohdaten zu durchsuchen?

War es hilfreich?

Lösung

Wenn Sie nur die Benutzerdaten aus einer Tabelle oder einer Ansicht (die wahrscheinlich nützlicher wäre) angeben, können Sie den Namen dieser Ansicht in einer Tabelle speichern und mit einer Funktion abrufen. Sie können dann die Daten in Seiten anzeigen und sicherstellen, dass Ihre Standard -Select -Skripte bei Bedarf eine integrierte Suchfunktion enthält.

Es ist nicht erforderlich, dass der Benutzer SQL schreibt, wenn er nur Daten aus einer Tabelle oder Ansicht erhält. Wenn Sie mehrere potenzielle Tabellen/ Ansichten bereitstellen müssen, lassen Sie sie aus einem Dropdown -Abschluss auswählen, aber es klingt nicht lohnenswert, dass sie ihre eigenen SQL -Abfragen schreiben können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top