Frage

Wir bauen eine Multi-Tenant-Website in ASP.NET, und wir müssen jeden Kunden konfigurieren ihre eigenen Sicherheitsmodell lassen. Sie müssen in der Lage sein, ihre eigenen Rollen zu definieren, und setzt Anwender in diesen Rollen. Was ist der beste Weg, dies zu tun?

Es gibt Unmengen an einfachen Beispiele für page_load Ereignisse, den Code haben wie:

  if (!user.InGroup("Admin")
       Response.Redirect("/NoAccess.aspx");

Aber das Festcodes die Gruppen und Berechtigungen im Code. Wie kann ich es machen Benutzer konfigurierbar?

War es hilfreich?

Lösung

Vielleicht die konfigurierbaren Rollen in einer DB-Tabelle gesetzt, wo Sie die Rollen und Mieter zu speichern und dann den PagePermissions in einer anderen Tabelle, zum Beispiel:

Table "Role"
RoleId, TenantId, Role

Table "PagePermissions"
PageId, RoleId

Table "UserRoles"
UserId, RoleId

Dann in der Seite zu laden, überprüfen, ob der Benutzer in einem RoleId ist, die Berechtigungen für die Seite, zum Beispiel hat:

Select PageId FROM 
UserRoles UR INNER JOIN PagePermissions PP
ON UR.RoleId = PP.RoleID
WHERE UR.Userid = @UserId AND PP.PageID = @PageId

Wenn es keine Zeilen zurückgegeben dann den Benutzer verweigern.

Andere Tipps

Ich würde ein Konfigurationssystem für die Website erstellen, die leicht in config-Dateien verwaltet. Wo könnten Sie getippt Mitglieder erhalten und wie diese verwendet werden.

foreach(var group in ThisPageConfiguration.AcceptedRoleNames)
if (user.IsInRole(group))
...

Jeder Kunde könnte dann so konfigurieren, ihre Website in ihren Konfigurationsdateien ... Und jede andere Art von Dingen werden Sie konfigurieren mögen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top