Roles 클래스

정의

ASP.NET 애플리케이션에서 권한 부여를 확인하기 위해 역할에서 사용자 멤버 자격을 관리합니다.Manages user membership in roles for authorization checking in an ASP.NET application. 이 클래스는 상속할 수 없습니다.This class cannot be inherited.

public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
상속
Roles

예제

다음 예제에서는 ASP.NET 멤버 자격 및 ASP.NET 역할 둘 다 사용 하 고 사용 하도록 구성 된 애플리케이션에 대 한 Web.config 파일을 SqlRoleProvider SQL Server 데이터베이스에 멤버 자격 및 역할 정보를 저장 합니다.The following example shows the Web.config file for an application configured to use both ASP.NET membership and ASP.NET roles and to use the SqlRoleProvider to store membership and role information in a SQL Server database. 폼 인증을 사용 하 여 사용자가 인증 하 고 관리자 역할의 사용자만 애플리케이션에 대 한 액세스를 허용 됩니다.Users are authenticated with forms authentication and only users in the Administrators role are allowed access to the application.

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

다음 코드 예제에서는 프로그래밍 방식으로 다른 사용자에 게 역할을 볼 수 있도록 허용 하기 전에 로그온 한 사용자가 관리자 역할에 있는지 여부를 확인 합니다.The following code example programmatically checks whether the logged-on user is in the Administrators role before allowing the user to view other users' roles.

설명

ASP.NET 역할 관리를 사용 하면 사용자의 역할 이라고 하는 그룹을 기반으로 하는 애플리케이션에 대 한 권한 부여를 관리할 수 있습니다.ASP.NET role management enables you to manage authorization for your application based on groups of users, referred to as roles. 사용자 역할에 할당 하면 대신 또는 외에, 역할에 따라 웹 애플리케이션의 다른 부분이 나 기능에 대 한 액세스 권한 부여 사용자 이름을 기반으로 지정 제어할 수 있습니다.By assigning users to roles, you can control access to different parts or features of your Web application based on role instead of, or in addition to, specifying authorization based on user name. 예를 들어, 각 역할에 대해 서로 다른 권한을 지정 되어 있는 관리자, 직원, 이사 및 등과 같은 역할이 직원 애플리케이션 있을 수 있습니다.For example, an employee application might have roles such as Managers, Employees, Directors, and so on, where different privileges are specified for each role.

사용자는 둘 이상의 역할에 속할 수 있습니다.Users can belong to more than one role. 예를 들어, 토론 포럼 사이트의 경우 일부 사용자 역할의 멤버와 중재자 수 있습니다.For example, if your site is a discussion forum, some users might be in the role of both Members and Moderators. 사이트에서 서로 다른 권한을 갖도록 각 역할을 정의할 수 있습니다 하 고 두 역할 모두에 있는 사용자는 권한 집합을 모두 갖게 합니다.You might define each role to have different privileges on the site, and a user who is in both roles would then have both sets of privileges.

ASP.NET 응용 프로그램에 대 한 역할 관리를 사용 하도록 설정 하려면 다음 예제와 같이 응용 프로그램에 대 한 web.config 파일에서 system.web 섹션의 roleManager 요소를 사용 합니다.To enable role management for your ASP.NET application, use the roleManager element of the system.web section in the Web.config file for your application, as shown in the following example.

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

웹 애플리케이션에 대 한 구성 파일에서 또는 프로그래밍 방식으로 코드에서 권한 부여 규칙을 지정할 수 있습니다.You can specify authorization rules in the configuration file for your Web application or programmatically in your code. 예를 들어 web.config 파일의 다음 권한 부여 섹션에서는 사용자가 익명 사용자를 거부 하 여 로그온 한 다음 관리자 역할의 사용자만 액세스 권한을 부여할 수 있도록 합니다.For example, the following authorization section from a Web.config file requires users to log on (by denying anonymous users), and then allows only users in the Administrators role to have access.

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

사용 하는 경우는 authorization 애플리케이션의 사용자 역할을 기반으로 하는 권한 부여를 지정 하려면 애플리케이션의 Web.config 파일의 섹션에서 인증된 된 사용자 id를 제공 해야 합니다.If you use the authorization section in your application's Web.config file to specify authorization based on roles, users of your application must supply an authenticated user identity. Windows 또는 폼 인증을 사용 하 여 사용자를 인증할 수 있습니다.You can authenticate users by using either Windows or Forms authentication. 익명 사용자 역할에 할당할 수 없습니다.Anonymous users cannot be assigned to a role. 역할은 ASP.NET Membership 클래스와 독립적으로 또는 함께 사용할 수 있습니다.Roles can be used independently of, or in conjunction with, the ASP.NET Membership classes.

프로그래밍 방식으로 역할 멤버 자격을 확인 하려면 IsUserInRole 메서드에서 Roles 클래스 또는 Page.User 속성을 사용 하거나, Page.User 속성을 IPrincipal.IsInRole 메서드와 함께 사용할 수 있습니다.To verify role membership programmatically, you can use the Roles class or the Page.User property with the IsUserInRole method, or you can use the Page.User property with the IPrincipal.IsInRole method. 프로그래밍 방식으로 역할 멤버 자격을 확인 하는 샘플 코드를이 항목의 예제 섹션을 참조 하세요.For sample code that programmatically checks role membership, see the Example section in this topic.

Roles 클래스를 사용 하 여 역할을 만들고 삭제 하 고 역할에서 사용자를 추가 하거나 제거할 수도 있습니다.The Roles class also enables you to create and delete roles and to add users to or remove users from roles.

참고

사용 하도록 애플리케이션을 구성한 경우를 WindowsTokenRoleProvider 클래스, 역할 또는 역할 멤버 자격을 수정할 수 없습니다.If you have configured your application to use the WindowsTokenRoleProvider class, you cannot modify roles or role membership. WindowsTokenRoleProvider 클래스는 Windows 보안 그룹의 멤버 자격을 확인 합니다.The WindowsTokenRoleProvider class verifies membership in Windows security groups only. 이 경우을 만들어서 그룹을 삭제 하 고 그룹 멤버 자격 관리 ASP.NET 역할 보다는 Windows 사용자 계정 관리를 사용 해야 합니다.In this case, you must use Windows user account management rather than ASP.NET roles to create and delete groups and manage group membership.

여러 데이터 원본에서 역할 정보를 저장할 수 있습니다.You can store role information in several data sources.

  • WindowsTokenRoleProvider 클래스를 사용 하 여 Windows 그룹의 멤버 자격을 기반으로 역할 정보를 검색할 수 있습니다.You can use the WindowsTokenRoleProvider class to retrieve role information based on membership in Windows groups.

  • SqlRoleProvider 클래스를 사용 하 여 SQL Server 데이터베이스에 역할 정보를 저장할 수 있습니다.You can store role information in a SQL Server database by using the SqlRoleProvider class.

  • 기존 역할 정보가 있거나에 역할 정보를 저장 하 고 Windows, 권한 부여 저장소 또는 SQL Server 이외의 데이터 원본에서 역할 정보를 검색 하려는 경우 RoleProvider 추상 클래스를 상속 하는 클래스를 만들어 사용자 지정 역할 공급자를 구현할 수 있습니다.If you have existing role information, or want to store role information in and retrieve role information from a data source other than Windows, an Authorization Store, or SQL Server, you can implement a custom role provider by creating a class that inherits the RoleProvider abstract class. 자세한 내용은 역할 공급자 구현을 참조 하세요.For more information, see Implementing a Role Provider.

사용자의 브라우저에서 쿠키를 사용 하는 경우에 사용자의 컴퓨터에 쿠키에 해당 사용자에 대 한 역할 정보를 저장할 수 있습니다.If a user's browser accepts cookies, you can store role information for that user in a cookie on the user's computer. 각 페이지 요청에 ASP.NET 쿠키에서 해당 사용자에 대 한 역할 정보를 읽습니다.On each page request, ASP.NET reads the role information for that user from the cookie. 데이터 원본과 함께 역할 정보를 검색 하는 데 필요한 통신의 양을 줄여 애플리케이션 성능이 향상 됩니다.This can improve application performance by reducing the amount of communication required with the data source to retrieve role information. 사용자에 대 한 역할 정보를 쿠키에 저장 하는 데 오랜 인 경우 ASP.NET 쿠키에 가장 최근에 사용된 된 역할 정보를 저장 하 고 필요에 따라 데이터 원본에서 추가 역할 정보를 조회 합니다.If the role information for a user is too long to store in a cookie, ASP.NET stores just the most recently used role information in the cookie and then looks up additional role information in the data source as required. 사용자의 브라우저가 쿠키를 지원 하지 않는 경우 쿠키 사용 하지 않는 역할 정보를 쿠키에 캐시 되지 않습니다.If the user's browser does not support cookies or cookies are disabled, role information is not cached in a cookie.

ASP.NET 역할을 구성할 때 CookieProtectionValue 속성을 지정 하 여 쿠키에 캐시 된 역할 이름의 안정성을 향상할 수 있습니다.You can improve the reliability of the role names cached in a cookie by specifying a CookieProtectionValue property when you configure ASP.NET roles. 기본 CookieProtectionValue은 쿠키의 역할 이름을 암호화 하 고 쿠키 내용이 변경 되지 않았는지 확인 하는 All입니다.The default CookieProtectionValue is All, which encrypts role names in the cookie and validates that the cookie contents have not been altered.

속성

ApplicationName

역할 정보를 저장하고 검색할 응용 프로그램의 이름을 가져오거나 설정합니다.Gets or sets the name of the application to store and retrieve role information for.

CacheRolesInCookie

현재 사용자의 역할이 쿠키에 캐시되는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the current user's roles are cached in a cookie.

CookieName

역할 이름이 캐시되는 쿠키의 이름을 가져옵니다.Gets the name of the cookie where role names are cached.

CookiePath

캐시된 역할 이름 쿠키에 대한 경로를 가져옵니다.Gets the path for the cached role names cookie.

CookieProtectionValue

쿠키에 캐시된 역할 이름이 보호되는 방법을 나타내는 값을 가져옵니다.Gets a value that indicates how role names cached in a cookie are protected.

CookieRequireSSL

서버에 반환되기 위해 역할 이름 쿠키에 SSL이 필요한지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the role names cookie requires SSL in order to be returned to the server.

CookieSlidingExpiration

역할 이름 쿠키 만료 날짜 및 시간을 정기적으로 다시 설정하는지 여부를 나타냅니다.Indicates whether the role names cookie expiration date and time will be reset periodically.

CookieTimeout

역할 쿠키가 만료되기까지의 시간(분)을 가져옵니다.Gets the number of minutes before the roles cookie expires.

CreatePersistentCookie

역할 이름 쿠키가 세션 기반인지, 아니면 영구적인지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the role-names cookie is session-based or persistent.

Domain

역할 이름 쿠키의 도메인 값을 가져옵니다.Gets the value of the domain of the role-names cookie.

Enabled

현재 웹 애플리케이션에 역할 관리를 사용하는지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether role management is enabled for the current Web application.

MaxCachedResults

사용자에 대해 캐시할 역할 이름의 최대 개수를 가져옵니다.Gets the maximum number of role names to be cached for a user.

Provider

애플리케이션의 기본 역할 공급자를 가져옵니다.Gets the default role provider for the application.

Providers

ASP.NET 애플리케이션의 역할 공급자 컬렉션을 가져옵니다.Gets a collection of the role providers for the ASP.NET application.

메서드

AddUsersToRole(String[], String)

지정된 역할에 지정된 사용자를 추가합니다.Adds the specified users to the specified role.

AddUsersToRoles(String[], String[])

지정된 역할에 지정된 사용자를 추가합니다.Adds the specified users to the specified roles.

AddUserToRole(String, String)

지정된 역할에 지정된 사용자를 추가합니다.Adds the specified user to the specified role.

AddUserToRoles(String, String[])

지정된 역할에 지정된 사용자를 추가합니다.Adds the specified user to the specified roles.

CreateRole(String)

데이터 소스에 새 역할을 추가합니다.Adds a new role to the data source.

DeleteCookie()

역할 이름이 캐시된 쿠키를 삭제합니다.Deletes the cookie where role names are cached.

DeleteRole(String)

데이터 소스에서 역할을 제거합니다.Removes a role from the data source.

DeleteRole(String, Boolean)

데이터 소스에서 역할을 제거합니다.Removes a role from the data source.

FindUsersInRole(String, String)

지정된 사용자 이름과 일치하는 부분이 사용자 이름에 포함되어 있는 사용자의 목록을 지정된 역할에서 가져옵니다.Gets a list of users in a specified role where the user name contains the specified user name to match.

GetAllRoles()

애플리케이션의 모든 역할 목록을 가져옵니다.Gets a list of all the roles for the application.

GetRolesForUser()

현재 로그온한 사용자가 속한 역할 목록을 가져옵니다.Gets a list of the roles that the currently logged-on user is in.

GetRolesForUser(String)

사용자가 속한 역할 목록을 가져옵니다.Gets a list of the roles that a user is in.

GetUsersInRole(String)

지정된 역할에 있는 사용자 목록을 가져옵니다.Gets a list of users in the specified role.

IsUserInRole(String)

현재 로그온한 사용자가 지정된 역할에 속하는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the currently logged-on user is in the specified role. API는 ASP.NET 요청 스레드의 컨텍스트 내에서만 호출되도록 고안된 것으로, 해당 권한이 있는 사용 사례에서는 스레드로부터 안전이 보장됩니다.The API is only intended to be called within the context of an ASP.NET request thread, and in that sanctioned use case it is thread-safe.

IsUserInRole(String, String)

지정된 사용자가 지정된 역할에 속하는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the specified user is in the specified role. API는 ASP.NET 요청 스레드의 컨텍스트 내에서만 호출되도록 고안된 것으로, 해당 권한이 있는 사용 사례에서는 스레드로부터 안전이 보장됩니다.The API is only intended to be called within the context of an ASP.NET request thread, and in that sanctioned use case it is thread-safe.

RemoveUserFromRole(String, String)

지정된 역할에서 지정된 사용자를 제거합니다.Removes the specified user from the specified role.

RemoveUserFromRoles(String, String[])

지정된 역할에서 지정된 사용자를 제거합니다.Removes the specified user from the specified roles.

RemoveUsersFromRole(String[], String)

지정된 역할에서 지정된 사용자를 제거합니다.Removes the specified users from the specified role.

RemoveUsersFromRoles(String[], String[])

지정된 역할에서 지정된 사용자 이름을 제거합니다.Removes the specified user names from the specified roles.

RoleExists(String)

지정된 역할 이름이 역할 데이터 소스에 이미 있는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the specified role name already exists in the role data source.

적용 대상

추가 정보