Roles Klasse

Definition

Verwaltet die Benutzermitgliedschaft in Rollen für die Autorisierungsüberprüfung in einer ASP.NET-Anwendung. Diese Klasse kann nicht vererbt werden.

public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
Vererbung
Roles

Beispiele

Im folgenden Beispiel wird die Web.config-Datei für eine Anwendung dargestellt, die sowohl ASP.NET Mitgliedschaft als auch ASP.NET Rollen SqlRoleProvider verwendet und die Informationen zum Speichern von Mitgliedschafts- und Rolleninformationen in einer SQL Server Datenbank verwendet. Benutzer werden mit der Formularauthentifizierung authentifiziert, und nur Benutzer in der Rolle "Administratoren" dürfen auf die Anwendung zugreifen.

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
      name=".ASPXFORMSAUTH" />
    </authentication>

    <authorization>
      <deny users="?" />
      <allow roles="Administrators" />
      <deny users="*" />
    </authorization>

    <membership defaultProvider="AspNetSqlProvider" userIsOnlineTimeWindow="15">
    </membership>

    <roleManager defaultProvider="SqlProvider"
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieRequireSSL="true"
      cookieSlidingExpiration="true"
      cookieProtection="All" >

      <providers>
        <clear />
        <add
          name="SqlProvider"
          type="System.Web.Security.SqlRoleProvider"
          connectionStringName="SqlServices"
          applicationName="SampleApplication" />
        </providers>

    </roleManager>
  </system.web>
</configuration>

Im folgenden Codebeispiel wird programmgesteuert überprüft, ob sich der angemeldete Benutzer in der Rolle "Administratoren" befindet, bevor der Benutzer die Rollen anderer Benutzer anzeigen kann.

Hinweise

ASP.NET Rollenverwaltung ermöglicht Es Ihnen, die Autorisierung für Ihre Anwendung basierend auf Gruppen von Benutzern zu verwalten, die als Rollen bezeichnet werden. Durch Zuweisen von Benutzern zu Rollen können Sie den Zugriff auf verschiedene Teile oder Features Ihrer Webanwendung steuern, basierend auf der Rolle oder zusätzlich zur Angabe der Autorisierung basierend auf dem Benutzernamen. Beispielsweise kann eine Mitarbeiteranwendung Rollen wie Manager, Mitarbeiter, Direktoren usw. haben, wobei für jede Rolle unterschiedliche Berechtigungen angegeben werden.

Benutzer können zu mehr als einer Rolle gehören. Wenn Ihre Website beispielsweise ein Diskussionsforum ist, sind einige Benutzer möglicherweise in der Rolle von Mitgliedern und Moderatoren. Sie können jede Rolle definieren, um unterschiedliche Berechtigungen auf der Website zu haben, und ein Benutzer, der sich in beiden Rollen befindet, hätte dann beide Berechtigungen.

Um die Rollenverwaltung für Ihre ASP.NET-Anwendung zu aktivieren, verwenden Sie das RoleManager-Element des system.web Abschnitts in der Web.config-Datei für Ihre Anwendung, wie im folgenden Beispiel gezeigt.

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
      name=".ASPXFORMSAUTH" />
    </authentication>

  <roleManager defaultProvider="SqlProvider"
    enabled="true"
    cacheRolesInCookie="true"
    cookieName=".ASPROLES"
    cookieTimeout="30"
    cookiePath="/"
    cookieRequireSSL="false"
    cookieSlidingExpiration="true"
    cookieProtection="All" >
    <providers>
      <add
        name="SqlProvider"
        type="System.Web.Security.SqlRoleProvider"
        connectionStringName="SqlServices"
        applicationName="SampleApplication" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

Sie können Autorisierungsregeln in der Konfigurationsdatei für Ihre Webanwendung oder programmgesteuert in Ihrem Code angeben. Der folgende Autorisierungsabschnitt aus einer Web.config-Datei erfordert z. B. die Anmeldung von Benutzern (durch Ablehnen anonymer Benutzer), und ermöglicht dann nur Benutzern in der Rolle "Administratoren", Zugriff zu haben.

<authorization>
  <deny users="?" />
  <allow roles="Administrators" />
  <deny users="*" />
</authorization>

Wenn Sie den authorization Abschnitt in der Web.config Datei Ihrer Anwendung verwenden, um die Autorisierung basierend auf Rollen anzugeben, müssen Benutzer Ihrer Anwendung eine authentifizierte Benutzeridentität angeben. Sie können Benutzer authentifizieren, indem Sie entweder Windows oder Formularauthentifizierung verwenden. Anonyme Benutzer können einer Rolle nicht zugewiesen werden. Rollen können unabhängig von oder in Verbindung mit den ASP.NET Membership Klassen verwendet werden.

Um die Rollenmitgliedschaft programmgesteuert zu überprüfen, können Sie die Roles Klasse oder Page.User die Eigenschaft mit der Methode verwenden oder die Page.User Eigenschaft mit der IsUserInRole IPrincipal.IsInRole Methode verwenden. Beispielcode, der die Rollenmitgliedschaft programmgesteuert überprüft, finden Sie im Abschnitt "Beispiel" in diesem Thema.

Die Roles Klasse ermöglicht es Ihnen auch, Rollen zu erstellen und zu löschen und Benutzer aus Rollen hinzuzufügen oder zu entfernen.

Hinweis

Wenn Sie Ihre Anwendung für die Verwendung der WindowsTokenRoleProvider Klasse konfiguriert haben, können Sie Rollen oder Rollenmitgliedschaft nicht ändern. Die WindowsTokenRoleProvider Klasse überprüft nur die Mitgliedschaft in Windows Sicherheitsgruppen. In diesem Fall müssen Sie Windows Benutzerkontoverwaltung anstelle ASP.NET Rollen verwenden, um Gruppen zu erstellen und zu löschen und Gruppenmitgliedschaft zu verwalten.

Sie können Rolleninformationen in mehreren Datenquellen speichern.

  • Sie können die WindowsTokenRoleProvider Klasse verwenden, um Rolleninformationen basierend auf der Mitgliedschaft in Windows Gruppen abzurufen.

  • Sie können Rolleninformationen in einer SQL Server Datenbank mithilfe der SqlRoleProvider Klasse speichern.

  • Wenn Sie über vorhandene Rolleninformationen verfügen oder Rolleninformationen aus einer anderen Datenquelle als Windows, einer Autorisierung Store oder SQL Server speichern möchten, können Sie einen benutzerdefinierten Rollenanbieter implementieren, indem Sie eine Klasse erstellen, die die RoleProvider abstrakte Klasse erbt. Weitere Informationen finden Sie unter Implementieren eines Rollenanbieters.

Wenn der Browser eines Benutzers Cookies akzeptiert, können Sie Rolleninformationen für diesen Benutzer in einem Cookie auf dem Computer des Benutzers speichern. Auf jeder Seitenanforderung liest ASP.NET die Rolleninformationen für diesen Benutzer aus dem Cookie. Dies kann die Anwendungsleistung verbessern, indem sie die Mit der Datenquelle erforderliche Kommunikation verringern, um Rolleninformationen abzurufen. Wenn die Rolleninformationen für einen Benutzer zu lang sind, um in einem Cookie zu speichern, speichert ASP.NET nur die zuletzt verwendeten Rolleninformationen im Cookie und dann weitere Rolleninformationen in der Datenquelle nach Bedarf nach. Wenn der Browser des Benutzers Cookies oder Cookies nicht unterstützt, werden Rolleninformationen nicht in einem Cookie zwischengespeichert.

Sie können die Zuverlässigkeit der in einem Cookie zwischengespeicherten Rollennamen verbessern, indem Sie eine CookieProtectionValue Eigenschaft angeben, wenn Sie ASP.NET Rollen konfigurieren. Die Standardeinstellung CookieProtectionValue ist All, die Rollennamen im Cookie verschlüsselt und überprüft, dass der Cookieinhalt nicht geändert wurde.

Eigenschaften

ApplicationName

Ruft den Namen der Anwendung ab, für die Rolleninformationen gespeichert und abgerufen werden sollen, oder legt diesen fest.

CacheRolesInCookie

Ruft einen Wert ab, der angibt, ob die Rollen des aktuellen Benutzers in einem Cookie zwischengespeichert werden.

CookieName

Ruft den Namen des Cookies ab, in dem Rollennamen zwischengespeichert werden.

CookiePath

Ruft den Pfad für das Cookie mit den zwischengespeicherten Rollennamen ab.

CookieProtectionValue

Ruft einen Wert ab, der angibt, wie in einem Cookie zwischengespeicherte Rollennamen geschützt werden.

CookieRequireSSL

Ruft einen Wert ab, der angibt, ob zum Zurücksenden des Rollennamencookies an den Server SSL erforderlich ist.

CookieSlidingExpiration

Gibt an, ob Datum und Uhrzeit für den Ablauf der Gültigkeit des Rollennamencookies in regelmäßigen Abständen zurückgesetzt werden.

CookieTimeout

Ruft die Anzahl von Minuten bis zum Ablauf der Gültigkeit des Rollencookies ab.

CreatePersistentCookie

Ruft einen Wert ab, der angibt, ob das Rollennamencookie sitzungsbasiert oder permanent ist.

Domain

Ruft den Wert der Domäne des Rollennamencookies ab.

Enabled

Ruft einen Wert ab, der angibt, ob Rollenverwaltung für die aktuelle Webanwendung aktiviert ist, oder legt diesen fest.

MaxCachedResults

Ruft die maximale Anzahl von Rollennamen ab, die für einen Benutzer zwischengespeichert werden sollen.

Provider

Ruft den Standardrollenanbieter für die Anwendung ab.

Providers

Ruft eine Auflistung der Rollenanbieter für die ASP.NET-Anwendung ab.

Methoden

AddUsersToRole(String[], String)

Fügt der angegebenen Rolle die angegebenen Benutzer hinzu.

AddUsersToRoles(String[], String[])

Fügt den angegebenen Rollen die angegebenen Benutzer hinzu.

AddUserToRole(String, String)

Fügt der angegebenen Rolle den angegebenen Benutzer hinzu.

AddUserToRoles(String, String[])

Fügt den angegebenen Rollen den angegebenen Benutzer hinzu.

CreateRole(String)

Fügt der Datenquelle eine neue Rolle hinzu.

DeleteCookie()

Löscht das Cookie, in dem Rollennamen zwischengespeichert werden.

DeleteRole(String)

Entfernt eine Rolle aus der Datenquelle.

DeleteRole(String, Boolean)

Entfernt eine Rolle aus der Datenquelle.

FindUsersInRole(String, String)

Ruft eine Liste der Benutzer ab, die eine angegebene Rolle innehaben, und deren Benutzername mit dem angegebenen Benutzernamen übereinstimmt.

GetAllRoles()

Ruft eine Liste aller Rollen für die Anwendung ab.

GetRolesForUser()

Ruft eine Liste der Rollen des gegenwärtig angemeldeten Benutzers ab.

GetRolesForUser(String)

Ruft eine Liste der Rollen ab, die ein Benutzer innehat.

GetUsersInRole(String)

Ruft eine Liste der Benutzer mit der angegebenen Rolle ab.

IsUserInRole(String)

Ruft einen Wert ab, der angibt, ob der gegenwärtig angemeldete Benutzer die angegebene Rolle innehat. Die API sollte nur im Kontext eines ASP.NET-Anforderungsthreads aufgerufen werden und ist in diesem speziellen Anwendungsfall threadsicher.

IsUserInRole(String, String)

Ruft einen Wert ab, der angibt, ob der angegebene Benutzer die angegebene Rolle innehat. Die API sollte nur im Kontext eines ASP.NET-Anforderungsthreads aufgerufen werden und ist in diesem speziellen Anwendungsfall threadsicher.

RemoveUserFromRole(String, String)

Entfernt den angegebenen Benutzer aus der angegebenen Rolle.

RemoveUserFromRoles(String, String[])

Entfernt den angegebenen Benutzer aus den angegebenen Rollen.

RemoveUsersFromRole(String[], String)

Entfernt die angegebenen Benutzer aus der angegebenen Rolle.

RemoveUsersFromRoles(String[], String[])

Entfernt die angegebenen Benutzernamen aus den angegebenen Rollen.

RoleExists(String)

Ruft einen Wert ab, der angibt, ob der angegebene Rollenname bereits in der Rollendatenquelle vorhanden ist.

Gilt für

Siehe auch