Wir haben einen Dienst, der alle Daten des Clients verfügbar macht, haben alle das Objekt die Schnittstelle IAuthorized
.Erstellen Sie eine bessere Möglichkeit zum Filtern von Daten basierend auf Benutzerrolle
Die Daten, die an den Client gesendet werden, müssen basierend auf den Benutzeranmeldeinformationen gefiltert werden.
der Fluss ist wie, dass der Kunde den Service anrufen -> der Dienst der SomeManager Klasse aufruft, die die Daten aus der Datenbank bekommt ...
hier kommt der AuthorizationManager die Daten zu filtern ...
public class SomeManager
{
public object[] Foo()
{
var data = Repository.GetData();
return autorizationManager.Filter(data);
}
public object[] Foo_Else()
{
var data = Repository.GetOtherData();
return autorizationManager.Filter(data);
}
}
wie Sie jede Methode gefiltert werden sehen muss,
so, was ich frage Sie ist: können wir eine Basisklasse erstellen, die Filter jede Methode mit einigen der Ausgangsdaten zurück? ist es schlau? sollen wir es so lassen? einfach wach Methode wir Shell die Autorisierung aufrufen?
können Sie sich einen besseren Weg vorstellen?
etwas, was wie folgt aus:
public class EngineManager :BaseFilterAutho
{
[AuthorizationCollection]
public object[] Foo()
{
var data = Dao.GetData();
return data; //get filtered
}
[SingleCollection]
public object Foo_Else()
{
var data = Dao.GetOtherData().First();
return data //get filtered
}
}
Vielen Dank für Ihren Kommentar, ich mag nicht Post scharf, weil es Code-Injektion. aber deine Idee von 'IQueryable' ist sehr gut, die Filterung kann mit ... – guyl