Sdílet prostřednictvím


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 Serveru. Uživatelé se ověřují 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 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 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 než jedné role. Pokud je váš web například diskuzní fórum, můžou být někteří uživatelé 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 aplikaci ASP.NET povolit správu rolí, použijte prvek 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í část autorizace ze souboru Web.config vyžaduje, aby se uživatelé přihlásili (odepřením anonymních uživatelů) a pak mají přístup jenom uživatelé v roli Správci.

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

Pokud k určení autorizace na základě rolí použijete authorization oddíl v souboru Web.config vaší aplikace, musí uživatelé vaší aplikace zadat ověřenou identitu uživatele. Uživatele můžete ověřovat pomocí ověřování 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.

Chcete-li ověřit členství v roli prostřednictvím kódu programu, můžete použít Roles třídu nebo Page.User vlastnost s IsUserInRole metodou, 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í Systému Windows. V takovém případě je nutné používat správu uživatelských účtů systému Windows 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 v několika zdrojích 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 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 Serveru, můžete implementovat vlastního zprostředkovatele role 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 požadavku 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 rolích uživatele příliš dlouhé na uložení v souboru cookie, ASP.NET uloží pouze informace o naposledy použité roli v souboru cookie a 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í hodnota CookieProtectionValue je All, která šifruje názvy rolí v souboru cookie a ověří, že obsah souboru cookie nebyl změněn.

Vlastnosti

Name Description
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, kde se názvy rolí ukládají do mezipaměti.

CookiePath

Získá cestu pro soubory 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ěny.

CookieRequireSSL

Získá hodnotu určující, zda názvy rolí cookie vyžadují SSL, aby bylo vráceno na server.

CookieSlidingExpiration

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

CookieTimeout

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

CreatePersistentCookie

Získá hodnotu určující, zda jsou názvy rolí cookie založené na relaci nebo trvalé.

Domain

Získá hodnotu domény souboru cookie s názvy 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 ASP.NET aplikaci.

Metody

Name Description
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, Boolean)

Odebere roli ze zdroje dat.

DeleteRole(String)

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

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.

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é