Wie zu implementieren der rollenbasierten Sicherheit verwenden von Dynamischen Daten und Active Directory?

StackOverflow https://stackoverflow.com/questions/604175

Frage

Was ist der beste Weg, um Sicherheit zu implementieren über active directory-Rollen auf einem asp.net dynamische Daten site?

Ich möchte einschränken, bestimmte Ansichten (und die links) werden an bestimmte Rollen.d.h.Benutzer A kann nur-Ansicht-Liste Aktionen für Tabellen x und Benutzer B kann nur-Ansicht-Liste Aktionen für Tisch-y

War es hilfreich?

Lösung

Ich habe eine Reihe von Artikeln über dieses auf meinem Blog hier ein Dynamic Attribut Based Permission Lösung mit Benutzerrollen und hier Dynamic: Datenbank basierte Berechtigungen - Teil 1 und ich hätte auch alook unter Sicherung Dynamic Data Probe auf Codeplex , die eine Strecke Handler verwendet .

Andere Tipps

Ich habe dies getan, in vielen Anwendungen.

Habe die Windows-Authentifizierung für die Anwendung aktiviert haben.

Machen Sie einige Objekt, das kann die Speicherung von Anmeldeinformationen und Objekt in der session gespeichert für schnelle retreival.Wenn es nicht vorhanden ist, können Sie schnell erstellen Sie ihn neu.Normalerweise habe ich die einzelnen Rollen setzen, um ein bisschen zB:


enum USER_ROLE : int
{
  Role1 = 1,
  Role2 = 2,
  Role3 = 4,
  Role4 = 8,
  etc
}

if (Context.User.IsInRole("Roll1Name")) YourUserObject.Roles += USER_ROLE.Role1;
if (Context.User.IsInRole("Roll2Name")) YourUserObject.Roles += USER_ROLE.Role2;
etc

Dann jederzeit eine Kontrolle muss gesichert sein, gebe ich es in eine Funktion, die einen HtmlControl und eine Eigenschaft basierend auf der Rolle des Benutzers und die Sicherheits-Anforderung für das Steuerelement.

ZB.bool SetControlSecurity(HtmlControl ctrl, int iUserRoles, int iControlRoles, ACTION eAction)

Also ein Beispiel für eine panel sein könnte:

SetControlSecurity(pnlUserInfo, YourUserObject.Rollen, eRole.Role2, ACTION.Hide);

Ich in der Regel haben es auch in sich aufnehmen param, um die Art von Aktion, die für scheitern von Sicherheit wie ausblenden, readonly, Daten löschen, etc...

Vergleicht man die Rolle, die Funktion ist einfach:


bool bHasAccess = ((iUserRole & iControlRoles) > 0);
if (bHasAcess)
{
  // leave the control or make sure it is visible etc
}
else
{
  // take action to secure the control based on the action
}

Hoffe, das hilft.

Sie können nur die Active Directory-ASP.NET verwenden Memebrship & Rollenanbieter zu authentifizieren \ die Benutzer auf die Anwendung zu genehmigen. Dann können Sie die Roles.IsUserInRole wo immer Sie überprüfen möchten für die Mitgliedschaft AD Rolle Benutzer ein Teil der betreffenden Gruppe zu überprüfen (e) vor, den Inhalt zu machen.

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