Roles 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
ASP.NET 애플리케이션에서 권한 부여 확인을 위한 역할의 사용자 멤버 자격을 관리합니다. 이 클래스는 상속할 수 없습니다.
public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
- 상속
-
Roles
예제
다음 예제에서는 ASP.NET 멤버 자격 및 ASP.NET 역할을 모두 사용하고 SQL Server 데이터베이스에 멤버 자격 및 역할 정보를 저장하는 데 사용하도록 SqlRoleProvider 구성된 애플리케이션에 대한 Web.config 파일을 보여 줍니다. 사용자는 양식 인증으로 인증되고 관리자 역할의 사용자만 애플리케이션에 액세스할 수 있습니다.
<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>
다음 코드 예제에서는 사용자가 다른 사용자의 역할을 볼 수 있도록 허용하기 전에 로그온한 사용자가 관리자 역할에 있는지 여부를 프로그래밍 방식으로 확인합니다.
설명
ASP.NET 역할 관리를 사용하면 역할이라고 하는 사용자 그룹을 기반으로 애플리케이션에 대한 권한 부여를 관리할 수 있습니다. 역할에 사용자를 할당하면 사용자 이름에 따라 권한 부여를 지정하는 대신 역할을 기반으로 웹 애플리케이션의 다양한 부분이나 기능에 대한 액세스를 제어할 수 있습니다. 예를 들어 직원 애플리케이션에는 관리자, 직원, 이사 등의 역할이 있을 수 있으며 각 역할에 대해 서로 다른 권한이 지정됩니다.
사용자는 둘 이상의 역할에 속할 수 있습니다. 예를 들어 사이트가 토론 포럼인 경우 일부 사용자는 멤버와 중재자 모두의 역할을 맡을 수 있습니다. 사이트에서 서로 다른 권한을 가지도록 각 역할을 정의할 수 있으며, 두 역할 모두에 있는 사용자는 두 가지 권한 집합을 모두 갖게 됩니다.
ASP.NET 애플리케이션에 대한 역할 관리를 사용하도록 설정하려면 다음 예제와 같이 애플리케이션에 대한 Web.config 파일에 있는 섹션의 system.webroleManager 요소를 사용합니다.
<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.config 파일의 다음 권한 부여 섹션에서는 사용자가 익명 사용자를 거부하여 로그온한 다음 관리자 역할의 사용자만 액세스할 수 있도록 허용합니다.
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
애플리케이션의 Web.config 파일의 섹션을 사용하여 authorization 역할에 따라 권한 부여를 지정하는 경우 애플리케이션 사용자는 인증된 사용자 ID를 제공해야 합니다. Windows 또는 Forms 인증을 사용하여 사용자를 인증할 수 있습니다. 익명 사용자는 역할에 할당할 수 없습니다. 역할은 ASP.NET Membership 클래스와 독립적으로 또는 함께 사용할 수 있습니다.
프로그래밍 방식으로 역할 멤버 자격을 확인하려면 메서드와 Roles 함께 클래스 또는 Page.User 속성을 사용하거나 메서드와 Page.User 함께 IPrincipal.IsInRole 속성을 IsUserInRole 사용할 수 있습니다. 역할 멤버 자격을 프로그래밍 방식으로 확인하는 샘플 코드는 이 항목의 예제 섹션을 참조하세요.
또한 클래스 Roles 를 사용하면 역할을 만들고 삭제하고 사용자를 역할에서 사용자를 추가하거나 제거할 수 있습니다.
메모
클래스를 사용하도록 애플리케이션을 WindowsTokenRoleProvider 구성한 경우 역할 또는 역할 멤버 자격을 수정할 수 없습니다. 클래스는 WindowsTokenRoleProvider Windows 보안 그룹의 멤버 자격만 확인합니다. 이 경우 역할을 ASP.NET 대신 Windows 사용자 계정 관리를 사용하여 그룹을 만들고 삭제하고 그룹 멤버 자격을 관리해야 합니다.
역할 정보를 여러 데이터 원본에 저장할 수 있습니다.
클래스를 WindowsTokenRoleProvider 사용하여 Windows 그룹의 멤버 자격에 따라 역할 정보를 검색할 수 있습니다.
클래스를 사용하여 SqlRoleProvider SQL Server 데이터베이스에 역할 정보를 저장할 수 있습니다.
기존 역할 정보가 있거나 Windows, 권한 부여 저장소 또는 SQL Server 이외의 데이터 원본에서 역할 정보를 저장하고 검색하려는 경우 추상 클래스를 상속 RoleProvider 하는 클래스를 만들어 사용자 지정 역할 공급자를 구현할 수 있습니다. 자세한 내용은 역할 공급자 구현을 참조하세요.
사용자의 브라우저에서 쿠키를 허용하는 경우 해당 사용자의 역할 정보를 사용자 컴퓨터의 쿠키에 저장할 수 있습니다. 각 페이지 요청에서 ASP.NET 쿠키에서 해당 사용자의 역할 정보를 읽습니다. 이렇게 하면 역할 정보를 검색하는 데 필요한 데이터 원본과의 통신 양을 줄여 애플리케이션 성능을 향상시킬 수 있습니다. 사용자의 역할 정보가 너무 길어서 쿠키에 저장하지 않으면 ASP.NET 쿠키에 가장 최근에 사용한 역할 정보만 저장한 다음 필요에 따라 데이터 원본에서 추가 역할 정보를 조회합니다. 사용자의 브라우저에서 쿠키를 지원하지 않거나 쿠키를 사용하지 않도록 설정하면 역할 정보가 쿠키에 캐시되지 않습니다.
ASP.NET 역할을 구성할 때 속성을 지정하여 CookieProtectionValue 쿠키에 캐시된 역할 이름의 안정성을 향상시킬 수 있습니다. 기본값 CookieProtectionValue 은 All쿠키의 역할 이름을 암호화하고 쿠키 콘텐츠가 변경되지 않은지 확인하는 것입니다.
속성
| Name | Description |
|---|---|
| ApplicationName |
역할 정보를 저장하고 검색할 애플리케이션의 이름을 가져오거나 설정합니다. |
| CacheRolesInCookie |
현재 사용자의 역할이 쿠키에 캐시되는지 여부를 나타내는 값을 가져옵니다. |
| CookieName |
역할 이름이 캐시되는 쿠키의 이름을 가져옵니다. |
| CookiePath |
캐시된 역할 이름 쿠키의 경로를 가져옵니다. |
| CookieProtectionValue |
쿠키에 캐시된 역할 이름을 보호하는 방법을 나타내는 값을 가져옵니다. |
| CookieRequireSSL |
서버로 반환하기 위해 역할 이름 쿠키에 SSL이 필요한지 여부를 나타내는 값을 가져옵니다. |
| CookieSlidingExpiration |
역할 이름 쿠키 만료 날짜 및 시간을 주기적으로 다시 설정할지 여부를 나타냅니다. |
| CookieTimeout |
역할 쿠키가 만료되기까지의 시간(분)을 가져옵니다. |
| CreatePersistentCookie |
역할 이름 쿠키가 세션 기반 쿠키인지 또는 영구적인지를 나타내는 값을 가져옵니다. |
| Domain |
역할 이름 쿠키의 도메인 값을 가져옵니다. |
| Enabled |
현재 웹 애플리케이션에 역할 관리를 사용할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다. |
| MaxCachedResults |
사용자에 대해 캐시할 최대 역할 이름 수를 가져옵니다. |
| Provider |
애플리케이션의 기본 역할 공급자를 가져옵니다. |
| Providers |
ASP.NET 애플리케이션에 대한 역할 공급자의 컬렉션을 가져옵니다. |
메서드
| Name | Description |
|---|---|
| AddUsersToRole(String[], String) |
지정된 사용자를 지정된 역할에 추가합니다. |
| AddUsersToRoles(String[], String[]) |
지정된 역할에 지정된 사용자를 추가합니다. |
| AddUserToRole(String, String) |
지정된 역할에 지정된 사용자를 추가합니다. |
| AddUserToRoles(String, String[]) |
지정된 역할에 지정된 사용자를 추가합니다. |
| CreateRole(String) |
데이터 원본에 새 역할을 추가합니다. |
| DeleteCookie() |
역할 이름이 캐시되는 쿠키를 삭제합니다. |
| DeleteRole(String, Boolean) |
데이터 원본에서 역할을 제거합니다. |
| DeleteRole(String) |
데이터 원본에서 역할을 제거합니다. |
| FindUsersInRole(String, String) |
사용자 이름에 일치시킬 지정된 사용자 이름이 포함된 지정된 역할의 사용자 목록을 가져옵니다. |
| GetAllRoles() |
애플리케이션에 대한 모든 역할의 목록을 가져옵니다. |
| GetRolesForUser() |
현재 로그온한 사용자가 있는 역할 목록을 가져옵니다. |
| GetRolesForUser(String) |
사용자가 있는 역할의 목록을 가져옵니다. |
| GetUsersInRole(String) |
지정된 역할의 사용자 목록을 가져옵니다. |
| IsUserInRole(String, String) |
지정된 사용자가 지정된 역할에 있는지 여부를 나타내는 값을 가져옵니다. API는 ASP.NET 요청 스레드의 컨텍스트 내에서만 호출되며, 승인된 사용 사례에서는 스레드로부터 안전합니다. |
| IsUserInRole(String) |
현재 로그온한 사용자가 지정된 역할에 있는지 여부를 나타내는 값을 가져옵니다. API는 ASP.NET 요청 스레드의 컨텍스트 내에서만 호출되며, 승인된 사용 사례에서는 스레드로부터 안전합니다. |
| RemoveUserFromRole(String, String) |
지정된 역할에서 지정된 사용자를 제거합니다. |
| RemoveUserFromRoles(String, String[]) |
지정된 역할에서 지정된 사용자를 제거합니다. |
| RemoveUsersFromRole(String[], String) |
지정된 역할에서 지정된 사용자를 제거합니다. |
| RemoveUsersFromRoles(String[], String[]) |
지정된 역할에서 지정된 사용자 이름을 제거합니다. |
| RoleExists(String) |
지정된 역할 이름이 역할 데이터 원본에 이미 있는지 여부를 나타내는 값을 가져옵니다. |