Roles Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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. |