Roles Klasa

Definicja

Zarządza członkostwem użytkowników w rolach na potrzeby sprawdzania autoryzacji w aplikacji ASP.NET. Klasa ta nie może być dziedziczona.

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

Przykłady

W poniższym przykładzie pokazano plik Web.config dla aplikacji skonfigurowanej do używania zarówno członkostwa ASP.NET, jak i ról ASP.NET oraz do przechowywania SqlRoleProvider informacji o członkostwie i roli w bazie danych SQL Server. Użytkownicy są uwierzytelniani za pomocą uwierzytelniania formularzy, a tylko użytkownicy w roli Administratorzy mogą uzyskiwać dostęp do aplikacji.

<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>

Poniższy przykład kodu programowo sprawdza, czy zalogowany użytkownik znajduje się w roli Administratorzy przed zezwoleniem użytkownikowi na wyświetlanie ról innych użytkowników.

Uwagi

ASP.NET zarządzanie rolami umożliwia zarządzanie autoryzacją aplikacji na podstawie grup użytkowników, nazywanych rolami. Przypisując użytkowników do ról, możesz kontrolować dostęp do różnych części lub funkcji aplikacji internetowej na podstawie roli, a nie lub oprócz, określania autoryzacji na podstawie nazwy użytkownika. Na przykład aplikacja pracownika może mieć role, takie jak Menedżerowie, Pracownicy, Dyrektorzy itd., gdzie dla każdej roli są określane różne uprawnienia.

Użytkownicy mogą należeć do więcej niż jednej roli. Jeśli na przykład Witryna jest forum dyskusyjnym, niektórzy użytkownicy mogą pełnić rolę zarówno członków, jak i moderatorów. Każda rola może mieć inne uprawnienia w witrynie, a użytkownik, który znajduje się w obu rolach, będzie miał oba zestawy uprawnień.

Aby włączyć zarządzanie rolami dla aplikacji ASP.NET, użyj elementu system.web roleManager sekcji w pliku Web.config dla aplikacji, jak pokazano w poniższym przykładzie.

<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>

Reguły autoryzacji można określić w pliku konfiguracji aplikacji internetowej lub programowo w kodzie. Na przykład poniższa sekcja autoryzacji z pliku Web.config wymaga, aby użytkownicy logowali się (odmawiając użytkowników anonimowych), a następnie zezwalali na dostęp tylko użytkownikom w roli Administratorzy.

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

Jeśli używasz authorization sekcji w pliku Web.config aplikacji do określania autoryzacji na podstawie ról, użytkownicy aplikacji muszą podać uwierzytelnionej tożsamości użytkownika. Użytkowników można uwierzytelniać przy użyciu uwierzytelniania Windows lub formularzy. Użytkownicy anonimowi nie mogą być przypisani do roli. Role mogą być używane niezależnie lub w połączeniu z klasami ASP.NETMembership.

Aby programowo zweryfikować członkostwo w rolach, możesz użyć Roles klasy lub Page.User właściwości z IsUserInRole metodą lub można użyć Page.User właściwości z IPrincipal.IsInRole metodą . Przykładowy kod, który programowo sprawdza członkostwo w rolach, zobacz sekcję Przykład w tym temacie.

Klasa Roles umożliwia również tworzenie i usuwanie ról oraz dodawanie użytkowników do ról lub usuwanie ich z ról.

Uwaga

Jeśli aplikacja została skonfigurowana do używania WindowsTokenRoleProvider klasy, nie można modyfikować ról ani członkostwa w rolach. Klasa WindowsTokenRoleProvider weryfikuje członkostwo tylko w Windows grupach zabezpieczeń. W takim przypadku należy użyć Windows zarządzania kontami użytkowników, a nie ASP.NET ról, aby tworzyć i usuwać grupy oraz zarządzać członkostwem w grupach.

Informacje o rolach można przechowywać w kilku źródłach danych.

  • Możesz użyć WindowsTokenRoleProvider klasy , aby pobrać informacje o roli na podstawie członkostwa w grupach Windows.

  • Informacje o rolach można przechowywać w bazie danych SQL Server przy użyciu SqlRoleProvider klasy .

  • Jeśli masz istniejące informacje o roli lub chcesz przechowywać informacje o rolach i pobierać informacje o rolach ze źródła danych innego niż Windows, magazyn autoryzacji lub SQL Server, możesz zaimplementować niestandardowego dostawcę roli, tworząc klasę, która dziedziczy RoleProvider klasę abstrakcyjną. Aby uzyskać więcej informacji, zobacz Implementowanie dostawcy ról.

Jeśli przeglądarka użytkownika akceptuje pliki cookie, możesz przechowywać informacje o roli tego użytkownika w pliku cookie na komputerze użytkownika. Na każdej stronie żądania ASP.NET odczytuje informacje o roli tego użytkownika z pliku cookie. Może to poprawić wydajność aplikacji, zmniejszając ilość komunikacji wymaganej ze źródłem danych w celu pobrania informacji o rolach. Jeśli informacje o roli użytkownika są zbyt długie do przechowywania w pliku cookie, ASP.NET przechowuje tylko ostatnio używane informacje o roli w pliku cookie, a następnie wyszukuje dodatkowe informacje o rolach w źródle danych zgodnie z potrzebami. Jeśli przeglądarka użytkownika nie obsługuje plików cookie lub plików cookie są wyłączone, informacje o rolach nie są buforowane w pliku cookie.

Niezawodność nazw ról buforowanych w pliku cookie można zwiększyć, określając CookieProtectionValue właściwość podczas konfigurowania ról ASP.NET. Wartość domyślna CookieProtectionValue to All, która szyfruje nazwy ról w pliku cookie i sprawdza, czy zawartość pliku cookie nie została zmieniona.

Właściwości

ApplicationName

Pobiera lub ustawia nazwę aplikacji do przechowywania i pobierania informacji o roli.

CacheRolesInCookie

Pobiera wartość wskazującą, czy role bieżącego użytkownika są buforowane w pliku cookie.

CookieName

Pobiera nazwę pliku cookie, w którym są buforowane nazwy ról.

CookiePath

Pobiera ścieżkę pliku cookie nazw ról w pamięci podręcznej.

CookieProtectionValue

Pobiera wartość wskazującą, jak nazwy ról buforowane w pliku cookie są chronione.

CookieRequireSSL

Pobiera wartość wskazującą, czy plik cookie nazw ról wymaga protokołu SSL w celu zwrócenia go do serwera.

CookieSlidingExpiration

Wskazuje, czy nazwy plików cookie daty i godziny wygasania plików cookie będą okresowo resetowane.

CookieTimeout

Pobiera liczbę minut przed wygaśnięciem pliku cookie ról.

CreatePersistentCookie

Pobiera wartość wskazującą, czy plik cookie nazw ról jest oparty na sesji, czy trwały.

Domain

Pobiera wartość domeny pliku cookie nazw ról.

Enabled

Pobiera lub ustawia wartość wskazującą, czy zarządzanie rolami jest włączone dla bieżącej aplikacji internetowej.

MaxCachedResults

Pobiera maksymalną liczbę nazw ról do buforowania dla użytkownika.

Provider

Pobiera domyślnego dostawcę roli dla aplikacji.

Providers

Pobiera kolekcję dostawców ról dla aplikacji ASP.NET.

Metody

AddUsersToRole(String[], String)

Dodaje określonych użytkowników do określonej roli.

AddUsersToRoles(String[], String[])

Dodaje określonych użytkowników do określonych ról.

AddUserToRole(String, String)

Dodaje określonego użytkownika do określonej roli.

AddUserToRoles(String, String[])

Dodaje określonego użytkownika do określonych ról.

CreateRole(String)

Dodaje nową rolę do źródła danych.

DeleteCookie()

Usuwa plik cookie, w którym są buforowane nazwy ról.

DeleteRole(String)

Usuwa rolę ze źródła danych.

DeleteRole(String, Boolean)

Usuwa rolę ze źródła danych.

FindUsersInRole(String, String)

Pobiera listę użytkowników w określonej roli, w której nazwa użytkownika zawiera określoną nazwę użytkownika do dopasowania.

GetAllRoles()

Pobiera listę wszystkich ról aplikacji.

GetRolesForUser()

Pobiera listę ról, w których znajduje się aktualnie zalogowany użytkownik.

GetRolesForUser(String)

Pobiera listę ról, w których znajduje się użytkownik.

GetUsersInRole(String)

Pobiera listę użytkowników w określonej roli.

IsUserInRole(String)

Pobiera wartość wskazującą, czy aktualnie zalogowany użytkownik znajduje się w określonej roli. Interfejs API ma być wywoływany tylko w kontekście wątku żądania ASP.NET, a w tym zaakceptowanym przypadku użycia jest bezpieczny wątkowo.

IsUserInRole(String, String)

Pobiera wartość wskazującą, czy określony użytkownik znajduje się w określonej roli. Interfejs API ma być wywoływany tylko w kontekście wątku żądania ASP.NET, a w tym zaakceptowanym przypadku użycia jest bezpieczny wątkowo.

RemoveUserFromRole(String, String)

Usuwa określonego użytkownika z określonej roli.

RemoveUserFromRoles(String, String[])

Usuwa określonego użytkownika z określonych ról.

RemoveUsersFromRole(String[], String)

Usuwa określonych użytkowników z określonej roli.

RemoveUsersFromRoles(String[], String[])

Usuwa określone nazwy użytkowników z określonych ról.

RoleExists(String)

Pobiera wartość wskazującą, czy określona nazwa roli już istnieje w źródle danych roli.

Dotyczy

Zobacz też