In meiner Anwendung habe ich zwei Rollen (admin
und normal
). Im Modell habe ich Klasse (Beispiel):Sicherer Zugriff auf einen Teil der Eigenschaften
public class Foo
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Extra { get; set; }
}
Benutzer können diese Objekte auch bearbeiten und Filter verwenden, um zu suchen. Anwendung basiert auf WebAPI ASP.NET Core mit EF Core.
Es gibt eine Anforderung, die normal
sollte nicht sehen (oder etwas damit tun) Extra
Eigenschaft. Soll ich die Daten überall in der Anwendung schützen (Dienste, Controller, Datenzugriffsschicht), indem ich die Modellklasse (oder etwas anderes) aufspalte oder die Ausgabe von Endpunkten durch Ignorieren von Eigenschaften formatiere?
Eine meiner Ideen ist, ein Attribut zu erstellen, setzen Sie es auf Extra
Eigenschaft und dann ContractResolver
Ignorieren Eigenschaften mit diesem Attribut, wenn Benutzer nicht berechtigt ist, diese Eigenschaft zu sehen. Ändern Sie EF-Änderungs-Tracker auch so, dass das Speichern dieser Eigenschaft ignoriert wird (in denselben Fällen).
Gibt es ein Muster oder eine Strategie, wie mit diesem Problem umzugehen ist?
Klingt wie Sie abstrahieren Ihre Klasse müssen aus in mehrere Klassen. – maccettura