Ich habe eine Webanwendung, die auf dotnet core + entityframework core, Identity Server und MS SQL Server als Datenbank (Angular 2 am Frontend) aufgebaut ist. Ich habe bereits Benutzerauthentifizierung mit Rollen implementiert. Im Moment benutze ich das Autorize-Attribut, um den Zugriff auf verschiedene Teile meiner Anwendung zu kontrollieren. Hier haben wir ein Beispiel für eine API-Funktion für 3 verschiedene Rollen:Wie können Benutzer den Lese-/Schreibzugriff auf Entitäten steuern?
[Authorize(Roles = "ProductAdministrator, WebEditor, Manager")]
public IActionResult Get()
{
IList<Product> products = _service.GetProducts();
return Ok(products);
}
Wenn Sie nicht auf Ihrem Benutzer eine dieser Rollen verfügen, dann werden Sie nicht in der Lage sein, diese Liste der Produkte zuzugreifen.
Das Problem, mit dem ich gerade konfrontiert bin, ist, dass der Kunde, für den ich arbeite, in der Lage sein soll, den Rollenzugriff auf jedes Produktobjekt zu steuern. Bei der Erstellung sollte es wahrscheinlich eine Art von Standard-Rollensätzen geben, die dem Objekt zugewiesen sind. Ein "admin" -Benutzer sollte jedoch in der Lage sein, den Zugriff auf jedes Objekt/Objekt zu steuern.
Zum Beispiel könnten wir diese Aufgabe mit einigen Rollen haben:
var carProduct1 = new Product() {
Name = "Volvo XE 90",
Category = "Car",
Price = 51.600,
Roles = ["CarSeller", "ProductAdministrator", "Insurance", "VolvoExpert"]
};
Und dann könnte dies ein weiteres Ziel seines
var carProduct2 = new Product() {
Name = "Ford Fiesta",
Category = "Car",
Price = 15000,
Roles = ["ProductAdministrator", "CarDealer", "FordExpert", "CarWorkshop"]
};
Sie wahrscheinlich jetzt die Idee. Wie kann ich am besten von der Zugriffssteuerung auf Routerebene auf Objektebene zugreifen? Gibt es etwas dazu (meine Google-Suche war nicht fruchtbar)?