asp.net MVC-Autorisierung mit Rollen

Ich erstelle eine ASP.NET MVC-Anwendung, die das Konzept der Benutzer hat. Jeder Benutzer kann sein eigenes Profil bearbeiten. Zum Beispiel

PersonID = 1 kann sein Profil bearbeiten, indem er zu @ wechselhttp: // localhost / person / edit / 1 PersonID = 2 können ihr Profil bearbeiten, indem sie zu @ gehehttp: // localhost / person / edit / 2

Nichts besonders aufregend dort ...

Ich habe jedoch Probleme mit dem Autorisierungsschema. Im Moment gibt es nur zwei Rollen im System, "Administrator" und "DefaultUser", aber in Zukunft wird es wahrscheinlich noch mehr geben.

Ich kann das reguläre Authorize-Attribut nicht zum Angeben der Autorisierung verwenden, da beide Benutzer dieselbe Rolle spielen (z. B. "DefaultUser").

So, wenn ich den Autorisierungsfilter wie folgt spezifiziere:

[Authorize(Roles = "DefaultUser")]

dann gibt es keine Wirkung. PersonID = 1 kann in sein eigenes Profil gehen und es bearbeiten (wie es sein sollte), aber sie können auch einfach die URL in @ änderhttp: // localhost / person / edit / 2 und sie haben vollen Zugriff, um auch das Profil von PersonID = 2 zu bearbeiten (was sie nicht können sollten).

Bedeutet dies, dass ich einen eigenen Autorisierungsfilter erstellen muss, der prüft, ob die vom Benutzer angeforderte Aktion ihm "gehört", bevor er ihnen Zugriff gewährt? Das heißt, wenn die Bearbeitungsaktion mit Parameter = 1 von der aktuell angemeldeten Person angefordert wird, muss ich eine benutzerdefinierte Überprüfung durchführen, um sicherzustellen, dass die aktuell angemeldete Person PersonID = 1 ist, und in diesem Fall diese autorisieren und wenn nicht, Zugriff verweigern?

Fühlt sich an, als würde mir hier etwas Offensichtliches fehlen, also wäre jede Anleitung willkommen.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage