Nyelv

Roles Osztály

Definíció

Kezeli a szerepkörök felhasználói tagságát az ASP.NET-alkalmazásokban való engedélyezés ellenőrzéséhez. Ez az osztály nem örökölhető.

public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
Öröklődés
Roles

Példák

Az alábbi példa egy ASP.NET tagság és ASP.NET szerepkör használatára konfigurált alkalmazás Web.config fájlja, valamint a SqlRoleProvider használatával tárolja a tagsági és szerepköradatokat egy SQL Server-adatbázisban. A felhasználók hitelesítése űrlaphitelesítéssel történik, és csak a Rendszergazdák szerepkörben lévő felhasználók férhetnek hozzá az alkalmazáshoz.

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

Az alábbi példakód programozott módon ellenőrzi, hogy a bejelentkezett felhasználó szerepel-e a Rendszergazdák szerepkörben, mielőtt lehetővé tenné a felhasználó számára a többi felhasználó szerepköreinek megtekintését.

Megjegyzések

ASP.NET szerepkör-kezelés lehetővé teszi az alkalmazás engedélyezésének kezelését a felhasználók csoportjai, más néven szerepkörök alapján. A felhasználók szerepkörökhöz való hozzárendelésével szabályozhatja a webalkalmazás különböző részeihez vagy funkcióihoz való hozzáférést szerepkör alapján, nem pedig a felhasználónév alapján történő engedélyezés megadásával. Egy alkalmazotti alkalmazás például rendelkezhet olyan szerepkörökkal, mint a Vezetők, Alkalmazottak, Igazgatók stb., ahol különböző jogosultságok vannak megadva az egyes szerepkörökhöz.

A felhasználók több szerepkörhöz is tartozhatnak. Ha például a webhely egy vitafórum, előfordulhat, hogy egyes felhasználók a tagok és a moderátorok szerepét is betöltik. Az egyes szerepköröket úgy határozhatja meg, hogy különböző jogosultságokkal rendelkezzenek a webhelyen, és egy mindkét szerepkörben lévő felhasználó mindkét jogosultságkészlettel rendelkezik.

A ASP.NET alkalmazás szerepkör-felügyeletének engedélyezéséhez használja a roleManagersystem.web szakaszát az alkalmazás Web.config fájljában az alábbi példában látható módon.

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

Megadhatja az engedélyezési szabályokat a webalkalmazás konfigurációs fájljában, vagy programozott módon a kódban. Például egy Web.config fájl következő engedélyezési szakasza megköveteli a felhasználók bejelentkezését (a névtelen felhasználók megtagadásával), majd csak a Rendszergazdák szerepkörben lévő felhasználók számára engedélyezi a hozzáférést.

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

Ha az authorization alkalmazás Web.config fájljának szakaszát használja az engedélyezés szerepkörök alapján történő megadásához, az alkalmazás felhasználóinak hitelesített felhasználói identitást kell megadniuk. A felhasználók hitelesítését Windows vagy Űrlapok hitelesítésével végezheti el. Névtelen felhasználók nem rendelhetők hozzá szerepkörhöz. A szerepkörök a ASP.NET Membership osztályoktól függetlenül vagy azzal együtt is használhatók.

A szerepkör-tagság programozott ellenőrzéséhez használhatja az Roles osztályt vagy a Page.User tulajdonságot a IsUserInRole metódussal, vagy használhatja a Page.User tulajdonságot a IPrincipal.IsInRole metódussal. A szerepkör-tagságot programozott módon ellenőrző mintakódért tekintse meg a jelen témakör Példa szakaszát.

Az Roles osztály lehetővé teszi a szerepkörök létrehozását és törlését, valamint a felhasználók szerepkörökhöz való hozzáadását vagy eltávolítását is.

Note

Ha az alkalmazást az osztály használatára konfigurálta, nem módosíthatja a WindowsTokenRoleProvider szerepköröket vagy a szerepkör-tagságot. A WindowsTokenRoleProvider osztály csak Windows biztonsági csoportokban ellenőrzi a tagságot. Ebben az esetben Windows felhasználói fiókkezelést kell használnia ahelyett, hogy ASP.NET szerepköröket kell használnia a csoportok létrehozásához és törléséhez, valamint a csoporttagság kezeléséhez.

A szerepkör-információkat több adatforrásban is tárolhatja.

  • A WindowsTokenRoleProvider osztály segítségével Windows csoportok tagsága alapján lekérheti a szerepkör-információkat.

  • A szerepkör-információkat egy SQL Server-adatbázisban tárolhatja a SqlRoleProvider osztály használatával.

  • Ha rendelkezik meglévő szerepköradatokkal, vagy a szerepkör-információkat nem Windows, engedélyezési tárból vagy SQL Server származó adatforrásból szeretné tárolni és lekérni, egyéni szerepkör-szolgáltatót úgy valósíthat meg, hogy létrehoz egy olyan osztályt, amely örökli a RoleProvider absztrakt osztályt. További információ: Szerepkör-szolgáltató implementálása.

Ha a felhasználó böngészője elfogadja a cookie-kat, a felhasználó szerepköradatait egy cookie-ban tárolhatja a felhasználó számítógépén. Minden oldalkérésnél ASP.NET beolvassa az adott felhasználó szerepköradatait a cookie-ból. Ez javíthatja az alkalmazás teljesítményét azáltal, hogy csökkenti az adatforrással a szerepkör-információk lekéréséhez szükséges kommunikáció mennyiségét. Ha a felhasználó szerepköradatai túl hosszúak ahhoz, hogy cookie-ban tároljanak, ASP.NET csak a legutóbb használt szerepköradatokat tárolja a cookie-ban, majd szükség szerint további szerepköradatokat keres az adatforrásban. Ha a felhasználó böngészője nem támogatja a cookie-kat, vagy a cookie-k le vannak tiltva, a szerepkör-információk nem lesznek gyorsítótárazva egy cookie-ban.

A cookie-ban gyorsítótárazott szerepkörnevek megbízhatóságát úgy javíthatja, hogy CookieProtectionValue tulajdonságot ad meg ASP.NET szerepkörök konfigurálásakor. Az alapértelmezett CookieProtectionValue érték az All, amely titkosítja a szerepkörneveket a cookie-ban, és ellenőrzi, hogy a cookie tartalma nem módosult-e.

Tulajdonságok

Name Description
ApplicationName

Lekéri vagy beállítja az alkalmazás nevét a szerepköradatok tárolásához és lekéréséhez.

CacheRolesInCookie

Egy értéket kap, amely jelzi, hogy az aktuális felhasználó szerepkörei gyorsítótárazva vannak-e egy cookie-ban.

CookieName

Lekéri annak a cookie-nak a nevét, amelyben a szerepkörnevek gyorsítótárazva vannak.

CookiePath

Lekéri a gyorsítótárazott szerepkörnevek cookie elérési útját.

CookieProtectionValue

Olyan értéket kap, amely jelzi, hogy a cookie-kban gyorsítótárazott szerepkörnevek hogyan védve vannak.

CookieRequireSSL

Lekéri azt az értéket, amely jelzi, hogy a szerepkörnevek cookie-jának SSL-et kell-e igényelnie ahhoz, hogy vissza lehessen-e adni a kiszolgálónak.

CookieSlidingExpiration

Azt jelzi, hogy a szerepkörnevek cookie-lejárati dátuma és ideje rendszeres időközönként alaphelyzetbe áll-e.

CookieTimeout

Lekéri a szerepkörök cookie-jának lejárata előtti percek számát.

CreatePersistentCookie

Egy értéket kap, amely jelzi, hogy a szerepkör-nevek cookie munkamenet-alapú vagy állandó-e.

Domain

Lekéri a szerepkörneveket tartalmazó cookie tartományának értékét.

Enabled

Lekéri vagy beállít egy értéket, amely jelzi, hogy engedélyezve van-e a szerepkör-kezelés az aktuális webalkalmazáshoz.

MaxCachedResults

A felhasználó számára gyorsítótárazandó szerepkörnevek maximális számát adja meg.

Provider

Lekéri az alkalmazás alapértelmezett szerepkör-szolgáltatójának értékét.

Providers

Lekéri a ASP.NET alkalmazás szerepkör-szolgáltatóinak gyűjteményét.

Metódusok

Name Description
AddUsersToRole(String[], String)

Hozzáadja a megadott felhasználókat a megadott szerepkörhöz.

AddUsersToRoles(String[], String[])

Hozzáadja a megadott felhasználókat a megadott szerepkörökhöz.

AddUserToRole(String, String)

Hozzáadja a megadott felhasználót a megadott szerepkörhöz.

AddUserToRoles(String, String[])

Hozzáadja a megadott felhasználót a megadott szerepkörökhöz.

CreateRole(String)

Új szerepkört ad hozzá az adatforráshoz.

DeleteCookie()

Törli azt a cookie-t, amelyben a szerepkörnevek gyorsítótárazva vannak.

DeleteRole(String, Boolean)

Eltávolít egy szerepkört az adatforrásból.

DeleteRole(String)

Eltávolít egy szerepkört az adatforrásból.

FindUsersInRole(String, String)

Lekéri a megadott szerepkörben lévő felhasználók listáját, ahol a felhasználónév tartalmazza a megadott felhasználónevet.

GetAllRoles()

Lekéri az alkalmazás összes szerepkörének listáját.

GetRolesForUser()

Lekéri az aktuálisan bejelentkezett felhasználó szerepköreinek listáját.

GetRolesForUser(String)

Lekéri a felhasználók szerepköreinek listáját.

GetUsersInRole(String)

Lekéri a megadott szerepkörben lévő felhasználók listáját.

IsUserInRole(String, String)

Beolvas egy értéket, amely jelzi, hogy a megadott felhasználó szerepel-e a megadott szerepkörben. Az API-t csak egy ASP.NET kérelemszál kontextusában kell meghívni, és ebben a jóváhagyott használati esetben szálbiztos.

IsUserInRole(String)

Beolvas egy értéket, amely jelzi, hogy az aktuálisan bejelentkezett felhasználó szerepel-e a megadott szerepkörben. Az API-t csak egy ASP.NET kérelemszál kontextusában kell meghívni, és ebben a jóváhagyott használati esetben szálbiztos.

RemoveUserFromRole(String, String)

Eltávolítja a megadott felhasználót a megadott szerepkörből.

RemoveUserFromRoles(String, String[])

Eltávolítja a megadott felhasználót a megadott szerepkörökből.

RemoveUsersFromRole(String[], String)

Eltávolítja a megadott felhasználókat a megadott szerepkörből.

RemoveUsersFromRoles(String[], String[])

Eltávolítja a megadott felhasználóneveket a megadott szerepkörökből.

RoleExists(String)

Beolvas egy értéket, amely jelzi, hogy a megadott szerepkörnév már létezik-e a szerepkör adatforrásában.

A következőre érvényes:

Lásd még