Roles Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spravuje členství uživatelů v rolích pro kontrolu autorizace v aplikaci ASP.NET. Tuto třídu nelze zdědit.
public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
- Dědičnost
-
Roles
Příklady
Následující příklad ukazuje soubor Web.config pro aplikaci nakonfigurovanou tak, aby používala jak ASP.NET členství, tak role ASP.NET a používat SqlRoleProvider k ukládání informací o členství a rolích v databázi SQL Server. Uživatelé se ověřují pomocí ověřování formulářů a přístup k aplikaci mají pouze uživatelé v roli Správci.
<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>
Následující příklad kódu programově zkontroluje, jestli je přihlášený uživatel v roli Administrators, a teprve potom uživateli umožní zobrazit role jiných uživatelů.
Poznámky
ASP.NET správa rolí umožňuje spravovat autorizaci pro vaši aplikaci na základě skupin uživatelů, označovaných jako role. Přiřazením uživatelů k rolím můžete řídit přístup k různým částem nebo funkcím webové aplikace na základě role místo role nebo kromě toho určit autorizaci na základě uživatelského jména. Například aplikace zaměstnance může mít role, jako jsou manažeři, zaměstnanci, ředitelé atd., kde jsou pro každou roli zadána různá oprávnění.
Uživatelé můžou patřit do více rolí. Pokud je váš web například diskuzní fórum, někteří uživatelé můžou být v roli členů i moderátorů. Každou roli můžete definovat tak, aby měla různá oprávnění na webu, a uživatel, který je v obou rolích, pak bude mít obě sady oprávnění.
Pokud chcete pro vaši aplikaci ASP.NET povolit správu rolí, použijte prvek system.web
roleManager oddílu v souboru Web.config vaší aplikace, jak je znázorněno v následujícím příkladu.
<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>
Pravidla autorizace můžete zadat v konfiguračním souboru webové aplikace nebo programově v kódu. Například následující část autorizace ze souboru Web.config vyžaduje, aby se uživatelé přihlásili (odepřením anonymních uživatelů) a poté umožňuje přístup pouze uživatelům v roli Administrators.
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
Pokud použijete authorization
oddíl v souboru Web.config vaší aplikace k určení autorizace na základě rolí, musí uživatelé vaší aplikace zadat ověřenou identitu uživatele. Uživatele můžete ověřovat pomocí ověřování pomocí Windows nebo formulářů. Anonymním uživatelům nelze přiřadit roli. Role lze používat nezávisle na třídách ASP.NET Membership nebo ve spojení s ním.
Chcete-li ověřit členství v rolích programově, můžete použít Roles třídu nebo Page.User vlastnost s metodou IsUserInRole , nebo můžete použít Page.User vlastnost s metodou IPrincipal.IsInRole . Ukázkový kód, který programově kontroluje členství v rolích, najdete v části Příklad v tomto tématu.
Třída Roles také umožňuje vytvářet a odstraňovat role a přidávat uživatele do rolí nebo je odebírat.
Poznámka
Pokud jste aplikaci nakonfigurovali tak, aby používala WindowsTokenRoleProvider třídu, nemůžete upravovat role ani členství v rolích. Třída WindowsTokenRoleProvider ověřuje členství pouze ve skupinách zabezpečení Windows. V takovém případě je nutné použít Windows správu uživatelských účtů místo ASP.NET rolí k vytváření a odstraňování skupin a správě členství ve skupinách.
Informace o rolích můžete ukládat do několika zdrojů dat.
Pomocí třídy můžete WindowsTokenRoleProvider načíst informace o rolích na základě členství ve skupinách Windows.
Informace o rolích můžete ukládat do databáze SQL Server pomocí SqlRoleProvider třídy.
Pokud máte existující informace o roli nebo chcete ukládat informace o rolích a načítat informace o rolích z jiného zdroje dat než Windows, autorizačního úložiště nebo SQL Server, můžete implementovat vlastního zprostředkovatele rolí vytvořením třídy, která dědí RoleProvider abstraktní třídu. Další informace naleznete v tématu Implementace zprostředkovatele role.
Pokud prohlížeč uživatele přijímá soubory cookie, můžete informace o rolích tohoto uživatele uložit do souboru cookie na počítači uživatele. Na každé stránce žádosti ASP.NET přečte informace o roli daného uživatele ze souboru cookie. To může zlepšit výkon aplikace snížením množství komunikace požadované se zdrojem dat pro načtení informací o rolích. Pokud jsou informace o roli pro uživatele příliš dlouhé na ukládání do souboru cookie, ASP.NET uloží jenom informace o naposledy použité roli v souboru cookie a pak podle potřeby vyhledá další informace o roli ve zdroji dat. Pokud prohlížeč uživatele nepodporuje soubory cookie nebo soubory cookie jsou zakázané, informace o rolích se neukládají do mezipaměti souboru cookie.
Spolehlivost názvů rolí uložených v mezipaměti v souboru cookie můžete zlepšit zadáním CookieProtectionValue vlastnosti při konfiguraci ASP.NET rolí. Výchozí CookieProtectionValue hodnota je All
, která šifruje názvy rolí v souboru cookie a ověřuje, že obsah souboru cookie nebyl změněn.
Vlastnosti
ApplicationName |
Získá nebo nastaví název aplikace pro ukládání a načítání informací o rolích. |
CacheRolesInCookie |
Získá hodnotu určující, zda jsou role aktuálního uživatele uloženy v mezipaměti v souboru cookie. |
CookieName |
Získá název souboru cookie, ve kterém jsou názvy rolí uloženy v mezipaměti. |
CookiePath |
Získá cestu pro soubor cookie názvů rolí uložených v mezipaměti. |
CookieProtectionValue |
Získá hodnotu, která označuje, jak jsou názvy rolí uložené v mezipaměti v souboru cookie chráněné. |
CookieRequireSSL |
Získá hodnotu určující, zda názvy rolí cookie vyžadují SSL, aby se vrátil na server. |
CookieSlidingExpiration |
Určuje, jestli se datum a čas vypršení platnosti souboru cookie názvů rolí pravidelně resetuje. |
CookieTimeout |
Získá počet minut před vypršením platnosti souboru cookie rolí. |
CreatePersistentCookie |
Získá hodnotu určující, zda je soubor cookie názvů rolí založený na relaci nebo trvalý. |
Domain |
Získá hodnotu domény souboru cookie názvů rolí. |
Enabled |
Získá nebo nastaví hodnotu označující, zda je pro aktuální webovou aplikaci povolena správa rolí. |
MaxCachedResults |
Získá maximální počet názvů rolí, které se mají uživateli uložit do mezipaměti. |
Provider |
Získá výchozího zprostředkovatele role pro aplikaci. |
Providers |
Získá kolekci zprostředkovatelů rolí pro aplikaci ASP.NET. |
Metody
AddUsersToRole(String[], String) |
Přidá zadané uživatele do zadané role. |
AddUsersToRoles(String[], String[]) |
Přidá zadané uživatele do zadaných rolí. |
AddUserToRole(String, String) |
Přidá zadaného uživatele do zadané role. |
AddUserToRoles(String, String[]) |
Přidá zadaného uživatele do zadaných rolí. |
CreateRole(String) |
Přidá do zdroje dat novou roli. |
DeleteCookie() |
Odstraní soubor cookie, ve kterém jsou názvy rolí uloženy v mezipaměti. |
DeleteRole(String) |
Odebere roli ze zdroje dat. |
DeleteRole(String, Boolean) |
Odebere roli ze zdroje dat. |
FindUsersInRole(String, String) |
Získá seznam uživatelů v zadané roli, kde uživatelské jméno obsahuje zadané uživatelské jméno, které se má shodovat. |
GetAllRoles() |
Získá seznam všech rolí pro aplikaci. |
GetRolesForUser() |
Získá seznam rolí, ve které je aktuálně přihlášený uživatel. |
GetRolesForUser(String) |
Získá seznam rolí, ve které je uživatel. |
GetUsersInRole(String) |
Získá seznam uživatelů v zadané roli. |
IsUserInRole(String) |
Získá hodnotu určující, zda aktuálně přihlášený uživatel je v zadané roli. Rozhraní API je určeno pouze k volání v kontextu vlákna žádosti ASP.NET a v případě schváleného použití je bezpečné pro přístup z více vláken. |
IsUserInRole(String, String) |
Získá hodnotu určující, zda zadaný uživatel je v zadané roli. Rozhraní API je určeno pouze k volání v kontextu vlákna žádosti ASP.NET a v případě schváleného použití je bezpečné pro přístup z více vláken. |
RemoveUserFromRole(String, String) |
Odebere zadaného uživatele ze zadané role. |
RemoveUserFromRoles(String, String[]) |
Odebere zadaného uživatele ze zadaných rolí. |
RemoveUsersFromRole(String[], String) |
Odebere zadané uživatele ze zadané role. |
RemoveUsersFromRoles(String[], String[]) |
Odebere zadané uživatelské jména ze zadaných rolí. |
RoleExists(String) |
Získá hodnotu určující, zda zadaný název role již existuje ve zdroji dat role. |