Freigeben über


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 so konfiguriert ist, dass sowohl ASP.NET Mitgliedschafts- als auch ASP.NET Rollen verwendet werden und die SqlRoleProvider Mitgliedschafts- und Rolleninformationen in einer SQL Server-Datenbank gespeichert werden. Benutzer werden bei 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

mit 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 anstelle oder zusätzlich zur Angabe der Autorisierung basierend auf dem Benutzernamen steuern. Eine Mitarbeiteranwendung kann z. B. Rollen wie Manager, Mitarbeiter, Directors usw. haben, wobei für jede Rolle unterschiedliche Berechtigungen angegeben werden.

Benutzer können mehreren Rollen angehören. Wenn Ihre Website beispielsweise ein Diskussionsforum ist, sind einige Benutzer möglicherweise sowohl mitglieder als auch Moderatoren. Möglicherweise definieren Sie jede Rolle für unterschiedliche Berechtigungen auf der Website, 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 in Ihrem Code angeben. Der folgende Autorisierungsabschnitt aus einer Web.config-Datei erfordert beispielsweise, dass sich Benutzer anmelden (indem anonyme Benutzer verweigert werden), und dann können nur Benutzer in der Rolle "Administratoren" Zugriff 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 Die Benutzer Ihrer Anwendung eine authentifizierte Benutzeridentität angeben. Sie können Benutzer mithilfe der Windows- oder Forms-Authentifizierung authentifizieren. 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 die Page.User Eigenschaft mit der IsUserInRole Methode verwenden, oder Sie können die Page.User Eigenschaft mit der IPrincipal.IsInRole Methode verwenden. Beispielcode, der die Rollenmitgliedschaft programmgesteuert überprüft, finden Sie im Abschnitt "Beispiel" in diesem Thema.

Mit der Roles Klasse können Sie außerdem Rollen erstellen und löschen und Benutzer zu Rollen hinzufügen oder daraus entfernen.

Hinweis

Wenn Sie Ihre Anwendung für die Verwendung der WindowsTokenRoleProvider Klasse konfiguriert haben, können Sie keine Rollen oder Rollenmitgliedschaften ändern. Die WindowsTokenRoleProvider Klasse überprüft nur die Mitgliedschaft in Windows-Sicherheitsgruppen. In diesem Fall müssen Sie die Windows-Benutzerkontenverwaltung anstelle von 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.

  • 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 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 für das Abrufen von Rolleninformationen erforderliche Kommunikationsmenge mit der Datenquelle reduziert wird. 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 sucht dann nach bedarf weiteren Rolleninformationen in der Datenquelle. 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. Der Standardwert CookieProtectionValue ist All, der Rollennamen im Cookie verschlüsselt und überprüft, ob der Inhalt des Cookies nicht geändert wurde.

Eigenschaften

Name Beschreibung
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 für zwischengespeicherte Rollennamen ab.

CookieProtectionValue

Ruft einen Wert ab, der angibt, wie Rollennamen in einem Cookie zwischengespeichert werden.

CookieRequireSSL

Ruft einen Wert ab, der angibt, ob das Rollennamen-Cookie SSL erfordert, um an den Server zurückgegeben zu werden.

CookieSlidingExpiration

Gibt an, ob das Ablaufdatum und die Uhrzeit der Rollennamen in regelmäßigen Abständen zurückgesetzt werden.

CookieTimeout

Ruft die Anzahl der Minuten ab, bevor das Rollencookies abläuft.

CreatePersistentCookie

Ruft einen Wert ab, der angibt, ob das Cookie mit Rollennamen sitzungsbasiert oder persistent ist.

Domain

Ruft den Wert der Domäne des Rollennamen-Cookies ab.

Enabled

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die Rollenverwaltung für die aktuelle Webanwendung aktiviert ist.

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

Name Beschreibung
AddUsersToRole(String[], String)

Fügt die angegebenen Benutzer der angegebenen Rolle hinzu.

AddUsersToRoles(String[], String[])

Fügt die angegebenen Benutzer zu den angegebenen Rollen hinzu.

AddUserToRole(String, String)

Fügt den angegebenen Benutzer zur angegebenen Rolle hinzu.

AddUserToRoles(String, String[])

Fügt den angegebenen Benutzer zu den angegebenen Rollen hinzu.

CreateRole(String)

Fügt der Datenquelle eine neue Rolle hinzu.

DeleteCookie()

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

DeleteRole(String, Boolean)

Entfernt eine Rolle aus der Datenquelle.

DeleteRole(String)

Entfernt eine Rolle aus der Datenquelle.

FindUsersInRole(String, String)

Ruft eine Liste der Benutzer in einer angegebenen Rolle ab, in der der Benutzername den angegebenen Benutzernamen enthält, der übereinstimmen soll.

GetAllRoles()

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

GetRolesForUser()

Ruft eine Liste der Rollen ab, in denen sich der aktuell angemeldete Benutzer befindet.

GetRolesForUser(String)

Ruft eine Liste der Rollen ab, in denen sich ein Benutzer befindet.

GetUsersInRole(String)

Ruft eine Liste der Benutzer in der angegebenen Rolle ab.

IsUserInRole(String, String)

Ruft einen Wert ab, der angibt, ob sich der angegebene Benutzer in der angegebenen Rolle befindet. Die API soll nur im Kontext eines ASP.NET Anforderungsthreads aufgerufen werden, und in diesem sanktionierten Anwendungsfall ist sie threadsicher.

IsUserInRole(String)

Ruft einen Wert ab, der angibt, ob sich der aktuell angemeldete Benutzer in der angegebenen Rolle befindet. Die API soll nur im Kontext eines ASP.NET Anforderungsthreads aufgerufen werden, und in diesem sanktionierten Anwendungsfall ist sie 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