Roles Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 przedstawiono plik Web.config dla aplikacji skonfigurowanej do używania zarówno ASP.NET członkostwa, jak i ról ASP.NET oraz do przechowywania SqlRoleProvider informacji o członkostwie i roli w bazie danych programu 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ą dla 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 systemu 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.NET Membership .
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 grupach zabezpieczeń systemu Windows. W takim przypadku należy użyć funkcji zarządzania kontami użytkowników systemu Windows, 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 systemu Windows.
Informacje o roli można przechowywać w bazie danych programu 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 roli ze źródła danych innego niż System Windows, magazyn autoryzacji lub program 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 jest 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. |