Ich erstelle eine Anwendung, indem es eine rollenbasierte Modulverwaltung gibt, die jederzeit geändert wird. Szenario:
- Wenn ein Benutzer Zugriff zum Erstellen und Anzeigen von Mitarbeitern hat, kann ein Benutzer nur Mitarbeiter erstellen und anzeigen, aber in Zukunft kann der Administrator die Benutzerrolle von Erstellen und Anzeigen zum Anzeigen und Löschen ändern, als ein Benutzer nur diese Aktivität ausführen kann.
Ich versuche es mit, [Authorize(Roles ="Staff")]
aber wenn der Administrator die Laufzeit ändert, wird sie nicht verwaltet.
Kann jemand das untersuchen und sich bei mir melden?
c#
asp.net-mvc
authentication
asp.net-core
Deep Soni
quelle
quelle
Authorize(Roles ="Staff")
stellt sicher, dass nur Benutzer mit RolleStaff
auf diese Aktion zugreifen können. Wenn der Benutzer aus dieser Rolle entfernt wird, kann der Benutzer nicht darauf zugreifen. Geschieht dies nicht?Create Employee
,View Employee
und @Emad Ja ich Notwendigkeit ändert sich zum Zeitpunkt der Anmeldung , ob es irgendwelche Änderungen während der Live - Session sind dann gibt es keine in einer Rolle beeinflussen. Ist es möglich?Antworten:
Dies ist eine komplizierte Frage und es gibt keine richtige Antwort, aber es gibt verschiedene Möglichkeiten, dies zu tun. Zunächst gehe ich davon aus, dass Sie die zustandslose Authentifizierung mit einem auf Ansprüchen basierenden JWT verwenden. Der einfachste Weg besteht darin, eine eigene Richtlinie zu schreiben , die Benutzerrollen vor jeder Anforderung liest. Dies ist der einfachste Weg, dies zu tun und am schnellsten zu implementieren.
Diese Lösung ist jedoch nicht so leistungsfähig, da bei jeder Anforderung ein Aufruf der Datenbank erforderlich ist. Dies ist bei kleinen Lasten in Ordnung, kann jedoch zu Verkehrsproblemen führen. Die andere Möglichkeit besteht darin, alle Benutzertoken erneut aufzurufen, wenn sich die Rollen ändern. Dies ist jedoch sehr kompliziert. Ich bin sicher, wenn Sie einen Schnellzugriffsspeicher für Rollen wie Redis erstellen, gibt es keine Probleme, die Überprüfung bei jedem Anruf durchzuführen. Außerdem empfehle ich nicht, einen eigenen Benutzerspeicher zu erstellen, da es ein Albtraum ist, die Sicherheitsstandards aufrechtzuerhalten und auf dem neuesten Stand zu halten.
quelle
IDocumentRepository
es nicht verwenden. Es zeigt mir, wie ich UmbracoCMS installiere. Können Sie bitte herausfinden?Wenn Sie Sitzung / Cookie zum Speichern der angemeldeten Benutzerdetails verwenden, können Sie die Details leeren, wenn der Administrator Rollenänderungen vornimmt. Bei jeder Aktion können Sie die Rolle in Sitzung / Cookie überprüfen und fortfahren. Sobald der Benutzer auf eine beliebige Stelle auf dem Bildschirm klickt, die auf den Controller trifft. Die Bedingung wird überprüft und der Benutzer wird abgemeldet, da das Sitzungs- / Cookie-Objekt leer ist.
quelle