Roles Sınıf

Tanım

bir ASP.NET uygulamasında yetkilendirme denetimi için rollerdeki kullanıcı üyeliğini yönetir. Bu sınıf devralınamaz.

public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
Devralma
Roles

Örnekler

Aşağıdaki örnekte, hem ASP.NET üyeliği hem de ASP.NET rollerini kullanmak ve bir SQL Server veritabanında üyelik ve rol bilgilerini depolamak için kullanmak SqlRoleProvider üzere yapılandırılmış bir uygulamanın Web.config dosyası gösterilmektedir. Kullanıcıların kimliği form kimlik doğrulamasıyla doğrulanır ve yalnızca Yöneticiler rolündeki kullanıcıların uygulamaya erişimine izin verilir.

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

Aşağıdaki kod örneği, kullanıcının diğer kullanıcıların rollerini görüntülemesine izin vermeden önce program aracılığıyla oturum açan kullanıcının Yöneticiler rolünde olup olmadığını denetler.

Açıklamalar

ASP.NET rol yönetimi, rol olarak adlandırılan kullanıcı gruplarını temel alarak uygulamanız için yetkilendirmeyi yönetmenizi sağlar. Kullanıcıları rollere atayarak Web uygulamanızın farklı bölümlerine veya özelliklerine erişimi kullanıcı adına göre yetkilendirme belirtmek yerine veya buna ek olarak role göre denetleyebilirsiniz. Örneğin, bir çalışan uygulamasının, her rol için farklı ayrıcalıkların belirtildiği Yöneticiler, Çalışanlar, Yöneticiler gibi rolleri olabilir.

Kullanıcılar birden fazla role ait olabilir. Örneğin, siteniz bir tartışma forumuysa, bazı kullanıcılar hem Üyeler hem de Moderator'lar rolünde olabilir. Her rolü sitede farklı ayrıcalıklara sahip olacak şekilde tanımlayabilirsiniz ve her iki rolde de yer alan bir kullanıcı her iki ayrıcalık kümesine de sahip olur.

ASP.NET uygulamanız için rol yönetimini etkinleştirmek için, aşağıdaki örnekte gösterildiği gibi uygulamanızın Web.config dosyasındaki bölümün roleManager öğesini system.web kullanın.

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

Web uygulamanızın yapılandırma dosyasında veya kodunuzda program aracılığıyla yetkilendirme kuralları belirtebilirsiniz. Örneğin, Web.config dosyasının aşağıdaki yetkilendirme bölümü kullanıcıların oturum açmasını gerektirir (anonim kullanıcıları reddederek) ve ardından yalnızca Yöneticiler rolündeki kullanıcıların erişimine izin verir.

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

Rol tabanlı yetkilendirmeyi belirtmek için uygulamanızın Web.config dosyasındaki bölümünü kullanırsanız authorization , uygulamanızın kullanıcıları kimliği doğrulanmış bir kullanıcı kimliği sağlamalıdır. Windows veya Forms kimlik doğrulamasını kullanarak kullanıcıların kimliğini doğrulayabilirsiniz. Anonim kullanıcılar bir role atanamaz. Roller, ASP.NET Membership sınıflarından bağımsız olarak veya bunlarla birlikte kullanılabilir.

Rol üyeliğini program aracılığıyla doğrulamak için yöntemini kullanarak sınıfını RolesPage.User veya özelliğini IsUserInRole veya yöntemiyle IPrincipal.IsInRole özelliğini kullanabilirsinizPage.User. Program aracılığıyla rol üyeliğini denetleyen örnek kod için bu konudaki Örnek bölümüne bakın.

sınıfı Roles ayrıca rol oluşturup silmenize ve kullanıcıları rollere eklemenize veya rollerden kaldırmanıza olanak tanır.

Not

Uygulamanızı sınıfını kullanacak WindowsTokenRoleProvider şekilde yapılandırdıysanız, rolleri veya rol üyeliğini değiştiremezsiniz. WindowsTokenRoleProvider sınıfı yalnızca Windows güvenlik gruplarındaki üyeliği doğrular. Bu durumda, grupları oluşturmak ve silmek ve grup üyeliğini yönetmek için rolleri ASP.NET yerine Windows kullanıcı hesabı yönetimini kullanmanız gerekir.

Rol bilgilerini çeşitli veri kaynaklarında depolayabilirsiniz.

  • Windows gruplarındaki WindowsTokenRoleProvider üyeliği temel alan rol bilgilerini almak için sınıfını kullanabilirsiniz.

  • sınıfını kullanarak SqlRoleProvider rol bilgilerini SQL Server veritabanında depolayabilirsiniz.

  • Mevcut rol bilgileriniz varsa veya rol bilgilerini Windows, Yetkilendirme Deposu veya SQL Server dışında bir veri kaynağında depolayıp almak istiyorsanız, soyut sınıfı devralan RoleProvider bir sınıf oluşturarak özel bir rol sağlayıcısı uygulayabilirsiniz. Daha fazla bilgi için bkz. Rol Sağlayıcısı Uygulama.

Kullanıcının tarayıcısı tanımlama bilgilerini kabul ederse, söz konusu kullanıcının rol bilgilerini kullanıcının bilgisayarındaki bir tanımlama bilgisinde depolayabilirsiniz. Her sayfa isteğinde ASP.NET ilgili kullanıcının rol bilgilerini tanımlama bilgisinden okur. Bu, rol bilgilerini almak için veri kaynağıyla gereken iletişim miktarını azaltarak uygulama performansını artırabilir. Kullanıcının rol bilgileri tanımlama bilgisinde depolamayacak kadar uzunsa, ASP.NET tanımlama bilgisinde yalnızca en son kullanılan rol bilgilerini depolar ve sonra gerektiğinde veri kaynağında ek rol bilgilerini arar. Kullanıcının tarayıcısı tanımlama bilgilerini desteklemiyorsa veya tanımlama bilgileri devre dışı bırakılırsa, rol bilgileri tanımlama bilgisinde önbelleğe alınmaz.

ASP.NET rolleri yapılandırırken bir CookieProtectionValue özellik belirterek tanımlama bilgisinde önbelleğe alınan rol adlarının güvenilirliğini artırabilirsiniz. Varsayılan değer CookieProtectionValue , tanımlama bilgisindeki rol adlarını şifreleyen ve tanımlama bilgisi içeriğinin değiştirilmediğini doğrulayan değeridir All.

Özellikler

ApplicationName

Rol bilgilerini depolamak ve almak için uygulamanın adını alır veya ayarlar.

CacheRolesInCookie

Geçerli kullanıcının rollerinin bir tanımlama bilgisinde önbelleğe alınıp alınmadığını belirten bir değer alır.

CookieName

Rol adlarının önbelleğe alındığı tanımlama bilgisinin adını alır.

CookiePath

Önbelleğe alınan rol adları tanımlama bilgisinin yolunu alır.

CookieProtectionValue

Tanımlama bilgisinde önbelleğe alınan rol adlarının nasıl korunduğunu gösteren bir değer alır.

CookieRequireSSL

Rol adları tanımlama bilgisinin sunucuya döndürülmesi için SSL gerekip gerekmediğini belirten bir değer alır.

CookieSlidingExpiration

Rol adlarının tanımlama bilgisi sona erme tarihi ve saatinin düzenli aralıklarla sıfırlanıp sıfırlamayacağını gösterir.

CookieTimeout

Rol tanımlama bilgisinin süresi dolmadan önceki dakika sayısını alır.

CreatePersistentCookie

Rol adları tanımlama bilgisinin oturum tabanlı mı yoksa kalıcı mı olduğunu belirten bir değer alır.

Domain

Rol adları tanımlama bilgisinin etki alanının değerini alır.

Enabled

Rol yönetiminin geçerli Web uygulaması için etkinleştirilip etkinleştirilmediğini belirten bir değer alır veya ayarlar.

MaxCachedResults

Bir kullanıcı için önbelleğe alınacak en fazla rol adı sayısını alır.

Provider

Uygulama için varsayılan rol sağlayıcısını alır.

Providers

ASP.NET uygulaması için rol sağlayıcıları koleksiyonunu alır.

Yöntemler

AddUsersToRole(String[], String)

Belirtilen kullanıcıları belirtilen role ekler.

AddUsersToRoles(String[], String[])

Belirtilen kullanıcıları belirtilen rollere ekler.

AddUserToRole(String, String)

Belirtilen kullanıcıyı belirtilen role ekler.

AddUserToRoles(String, String[])

Belirtilen kullanıcıyı belirtilen rollere ekler.

CreateRole(String)

Veri kaynağına yeni bir rol ekler.

DeleteCookie()

Rol adlarının önbelleğe alındığı tanımlama bilgisini siler.

DeleteRole(String)

Veri kaynağından bir rolü kaldırır.

DeleteRole(String, Boolean)

Veri kaynağından bir rolü kaldırır.

FindUsersInRole(String, String)

Kullanıcı adının eşleşecek belirtilen kullanıcı adını içerdiği belirtilen roldeki kullanıcıların listesini alır.

GetAllRoles()

Uygulama için tüm rollerin listesini alır.

GetRolesForUser()

Şu anda oturum açmış olan kullanıcının içinde bulunduğu rollerin listesini alır.

GetRolesForUser(String)

Kullanıcının içinde olduğu rollerin listesini alır.

GetUsersInRole(String)

Belirtilen roldeki kullanıcıların listesini alır.

IsUserInRole(String)

Şu anda oturum açmış olan kullanıcının belirtilen rolde olup olmadığını belirten bir değer alır. API yalnızca bir ASP.NET istek iş parçacığı bağlamında çağrılmaya yöneliktir ve bu tasdikli kullanım durumunda iş parçacığı güvenlidir.

IsUserInRole(String, String)

Belirtilen kullanıcının belirtilen rolde olup olmadığını belirten bir değer alır. API yalnızca bir ASP.NET istek iş parçacığı bağlamında çağrılmaya yöneliktir ve bu tasdikli kullanım durumunda iş parçacığı güvenlidir.

RemoveUserFromRole(String, String)

Belirtilen kullanıcıyı belirtilen rolden kaldırır.

RemoveUserFromRoles(String, String[])

Belirtilen kullanıcıyı belirtilen rollerden kaldırır.

RemoveUsersFromRole(String[], String)

Belirtilen kullanıcıları belirtilen rolden kaldırır.

RemoveUsersFromRoles(String[], String[])

Belirtilen rollerden belirtilen kullanıcı adlarını kaldırır.

RoleExists(String)

Belirtilen rol adının rol veri kaynağında zaten var olup olmadığını belirten bir değer alır.

Şunlara uygulanır

Ayrıca bkz.