Sdílet prostřednictvím


Roles Třída

Definice

Spravuje členství uživatelů v rolích pro kontrolu autorizace v aplikaci ASP.NET. Tato třída se nemůže dě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 ASP.NET členství i ASP.NET role a k ukládání SqlRoleProvider informací o členství a rolích v databázi SQL Serveru. Uživatelé jsou ověřeni pomocí ověřování pomocí 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, než uživateli povolí 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 namísto zadávání autorizace na základě uživatelského jména. Například aplikace pro zaměstnance může mít role, jako jsou manažeři, zaměstnanci, ředitelé atd., kde jsou pro každou roli zadaná různá oprávnění.

Uživatelé můžou patřit do více než jedné role. Pokud je váš web například diskusním fórem, můžou být někteří uživatelé v roli členů i moderátorů. Každou roli můžete definovat tak, aby měla na webu různá oprávnění, a uživatel, který je v obou rolích, by pak měl obě sady oprávnění.

Pokud chcete povolit správu rolí pro aplikaci ASP.NET, použijte element system.webroleManager oddílu v souboru Web.config pro vaši aplikaci, 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>

Autorizační pravidla můžete zadat v konfiguračním souboru webové aplikace nebo programově v kódu. Například následující oddíl autorizace ze souboru Web.config vyžaduje, aby se uživatelé přihlásili (tím, že odepře anonymní uživatele) a pak povolí přístup jenom uživatelům s rolí Správci.

<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 buď pomocí ověřování Windows, nebo pomocí modelu Forms. Anonymní uživatele nelze přiřadit k roli. Role lze používat nezávisle na třídách ASP.NET nebo ve spojení s třídami.Membership

Pokud chcete 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 z rolí 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ě musíte k vytváření a odstraňování skupin a správě členství ve skupinách používat správu uživatelských účtů systému Windows místo ASP.NET rolí.

Informace o rolích můžete ukládat do několika zdrojů dat.

  • Třídu můžete použít WindowsTokenRoleProvider k načtení informací o rolích na základě členství ve skupinách Windows.

  • Informace o rolích můžete ukládat do databáze SQL Serveru pomocí SqlRoleProvider třídy .

  • Pokud máte existující informace o rolích nebo chcete informace o rolích ukládat a načítat je z jiného zdroje dat, než je Windows, úložiště autorizací 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 najdete 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 ASP.NET přečte informace o roli pro daného uživatele ze souboru cookie. To může zlepšit výkon aplikace tím, že snížíte množství komunikace potřebné ke zdroji dat pro načtení informací o rolích. Pokud jsou informace o roli uživatele příliš dlouhé na uložení do souboru cookie, ASP.NET do souboru cookie uložit pouze informace o naposledy použitých rolích a pak podle potřeby vyhledat další informace o rolích ve zdroji dat. Pokud prohlížeč uživatele soubory cookie nepodporuje nebo jsou zakázané, informace o rolích se v souboru cookie neukládají do mezipaměti.

Spolehlivost názvů rolí uložených v mezipaměti v souboru cookie můžete zvýšit zadáním CookieProtectionValue vlastnosti při konfiguraci ASP.NET rolí. Výchozí hodnota CookieProtectionValue 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 roli pro.

CacheRolesInCookie

Získá hodnotu označ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 chráněny názvy rolí uložených v mezipaměti v souboru cookie.

CookieRequireSSL

Získá hodnotu určující, zda názvy rolí soubor cookie vyžaduje SSL, aby se vrátil na server.

CookieSlidingExpiration

Určuje, jestli se datum a čas vypršení platnosti souborů cookie pro názvy rolí bude pravidelně resetovat.

CookieTimeout

Získá počet minut před vypršením platnosti souboru cookie rolí.

CreatePersistentCookie

Získá hodnotu označ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 povolena správa rolí pro aktuální webovou aplikaci.

MaxCachedResults

Získá maximální počet názvů rolí, které se mají uložit do mezipaměti pro uživatele.

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 k zadaným rolím.

AddUserToRole(String, String)

Přidá zadaného uživatele do zadané role.

AddUserToRoles(String, String[])

Přidá zadaného uživatele k zadaným rolím.

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 označující, zda je aktuálně přihlášený uživatel v zadané roli. Rozhraní API se má volat pouze v kontextu vlákna požadavku ASP.NET a v tomto schváleném případě použití je bezpečné pro přístup z více vláken.

IsUserInRole(String, String)

Získá hodnotu označující, zda je zadaný uživatel v zadané roli. Rozhraní API se má volat pouze v kontextu vlákna požadavku ASP.NET a v tomto schváleném případě 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 označující, zda zadaný název role již existuje ve zdroji dat role.

Platí pro

Viz také