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

Das folgende Beispiel zeigt die Web.config-Datei für eine Anwendung, die für die Verwendung ASP.NET Mitgliedschaft und ASP.NET Rollen konfiguriert ist und zum Speichern von SqlRoleProvider Mitgliedschafts- und Rolleninformationen in einer SQL Server-Datenbank verwendet wird. Benutzer werden mit der Formularauthentifizierung authentifiziert, und nur Benutzern in der Rolle Administratoren ist der Zugriff auf die Anwendung gestattet.

<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 können Sie die Autorisierung für Ihre Anwendung basierend auf Benutzergruppen verwalten, die als Rollen bezeichnet werden. Durch das Zuweisen von Benutzern zu Rollen können Sie den Zugriff auf verschiedene Teile oder Features Ihrer Webanwendung basierend auf der Rolle steuern, anstatt oder zusätzlich die Autorisierung basierend auf dem Benutzernamen anzugeben. Beispielsweise kann eine Mitarbeiteranwendung Über Rollen wie Manager, Mitarbeiter, Direktoren usw. verfügen, wobei für jede Rolle unterschiedliche Berechtigungen angegeben sind.

Benutzer können zu mehr als einer Rolle gehören. Wenn Es sich bei Ihrer Website beispielsweise um ein Diskussionsforum handelt, können einige Benutzer sowohl in der Rolle von Mitgliedern als auch als Moderatoren fungieren. Sie können jede Rolle so definieren, dass sie über unterschiedliche Berechtigungen auf der Website verfügt, und ein Benutzer, der sich in beiden Rollen befindet, verfügt dann über beide Berechtigungssätze.

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 im Code angeben. Der folgende Autorisierungsabschnitt aus einer Web.config-Datei erfordert z. B. die Anmeldung von Benutzern (indem anonyme Benutzer verweigert werden), und erlaubt dann nur Benutzern in der Rolle "Administratoren", Zugriff zu haben.

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

Wenn Sie den Abschnitt in der authorization 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 mithilfe der Windows- oder Forms-Authentifizierung authentifizieren. Anonyme Benutzer können nicht einer Rolle 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 Eigenschaft mit der IsUserInRole -Methode oder die Page.User -Eigenschaft mit der IPrincipal.IsInRole -Methode verwenden. Beispielcode zum programmgesteuerten Überprüfen der Rollenmitgliedschaft 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 zu Rollen hinzuzufügen oder aus diesen zu entfernen.

Hinweis

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

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

  • Wenn Sie über vorhandene Rolleninformationen verfügen oder Rolleninformationen in einer anderen Datenquelle als Windows, einem Autorisierungsspeicher oder SQL Server speichern und Rolleninformationen abrufen 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 die Menge an Kommunikation mit der Datenquelle verringert wird, die zum Abrufen von Rolleninformationen erforderlich ist. Wenn die Rolleninformationen für einen Benutzer zu lang sind, um sie in einem Cookie zu speichern, speichert ASP.NET nur die zuletzt verwendeten Rolleninformationen im Cookie und sucht dann bei Bedarf nach zusätzlichen Rolleninformationen in der Datenquelle. Wenn der Browser des Benutzers keine Cookies unterstützt oder Cookies deaktiviert sind, werden Rolleninformationen nicht in einem Cookie zwischengespeichert.

Sie können die Zuverlässigkeit der in einem Cookie zwischengespeicherten Rollennamen verbessern, indem Sie beim Konfigurieren ASP.NET Rollen eine CookieProtectionValue Eigenschaft angeben. Der Standardwert CookieProtectionValue ist All, wodurch Rollennamen im Cookie verschlüsselt und überprüft wird, ob 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:

Weitere Informationen