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.
ASP.NET bir uygulamada 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 SqlRoleProvider kullanacak ve üyelik ve rol bilgilerini SQL Server veritabanında depolamak üzere yapılandırılan 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 oturum açmış kullanıcının Yöneticiler rolünde olup olmadığını program aracılığıyla denetler.
Açıklamalar
ASP.NET rol yönetimi, rol olarak adlandırılan kullanıcı gruplarına göre 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 belirtme 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 Moderatörler 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ızda rol yönetimini etkinleştirmek için, aşağıdaki örnekte gösterildiği gibi uygulamanızın system.web Web.config dosyasındaki bölümün roleManager öğesini 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>
Yetkilendirme kurallarını Web uygulamanızın yapılandırma dosyasında veya kodunuzda program aracılığıyla belirtebilirsiniz. Örneğin, Web.config dosyasındaki 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>
Rollere göre yetkilendirmeyi belirtmek için uygulamanızın Web.config dosyasındaki bölümü 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, sınıfını Roles veya Page.User özelliğini yöntemiyle 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.
Uyarı
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ında üyeliği doğrular. Bu durumda, grupları oluşturmak ve silmek ve grup üyeliğini yönetmek için ASP.NET rolleri yerine Windows kullanıcı hesabı yönetimini kullanmanız gerekir.
Rol bilgilerini çeşitli veri kaynaklarında depolayabilirsiniz.
Sınıfını WindowsTokenRoleProvider , Windows gruplarındaki üyeliği temel alan rol bilgilerini almak için kullanabilirsiniz.
sınıfını kullanarak SqlRoleProvider rol bilgilerini bir SQL Server veritabanında depolayabilirsiniz.
Mevcut rol bilgileriniz varsa veya rol bilgilerini Windows, Yetkilendirme Deposu veya SQL Server dışında bir veri kaynağında depolamak ve rol bilgilerini 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 depolanamayacak 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. Tanımlama bilgisindeki rol adlarını şifreleyen ve tanımlama bilgisi içeriğinin değiştirilmediğini doğrulayan varsayılan CookieProtectionValue değerdir All.
Özellikler
| Name | Description |
|---|---|
| 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 gerektirmediğ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 rol adlarının üst sınırı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
| Name | Description |
|---|---|
| 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, Boolean) |
Veri kaynağından bir rolü kaldırır. |
| DeleteRole(String) |
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ış kullanıcının 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, 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. |
| 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. |
| 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 kullanıcı adlarını belirtilen rollerden kaldırır. |
| RoleExists(String) |
Belirtilen rol adının rol veri kaynağında zaten var olup olmadığını gösteren bir değer alır. |