Roles Třída

Definice

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.

Platí pro

Viz také