다음을 통해 공유


Roles.RemoveUsersFromRole(String[], String) 메서드

정의

지정된 역할에서 지정된 사용자를 제거합니다.

public:
 static void RemoveUsersFromRole(cli::array <System::String ^> ^ usernames, System::String ^ roleName);
public static void RemoveUsersFromRole (string[] usernames, string roleName);
static member RemoveUsersFromRole : string[] * string -> unit
Public Shared Sub RemoveUsersFromRole (usernames As String(), roleName As String)

매개 변수

usernames
String[]

지정된 역할에서 제거할 사용자 이름으로 이루어진 문자열 배열입니다.

roleName
String

지정된 사용자를 제거할 역할의 이름입니다.

예외

roleName이(가) null인 경우

또는

usernames의 사용자 이름 중 하나가 null인 경우

roleName이 빈 문자열이거나 쉼표(,)를 포함하는 경우

또는

usernames의 사용자 이름 중 하나가 빈 문자열이거나 쉼표(,)를 포함하는 경우

또는

usernames에 중복 요소가 포함된 경우

역할 관리가 사용되지 않는 경우

예제

다음 코드 예제에서는 메서드를 RemoveUsersFromRole 사용하여 역할에서 하나 이상의 사용자를 제거합니다. 역할 관리를 사용 하도록 설정 하는 Web.config 파일의 예제를 참조 하세요. Roles합니다.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

string[] rolesArray;
string[] users;

public void Page_Load()
{
  Msg.Text = "";

  if (!IsPostBack)
  {
    // Bind roles to ListBox.

    rolesArray = Roles.GetAllRoles();
    RolesListBox.DataSource = rolesArray;
    RolesListBox.DataBind();
  }
}

public void RolesListBox_OnSelectedIndexChanged(object sender, EventArgs args)
{
  // Bind users to ListBox.

  users = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
  UsersListBox.DataSource = users;
  UsersListBox.DataBind();
}

public void RemoveUsers_OnClick(object sender, EventArgs args)
{
  // Verify that at least one user and a role are selected.

  int[] user_indices = UsersListBox.GetSelectedIndices();

  if (user_indices.Length == 0)
  {
    Msg.Text = "Please select one or more users.";
    return;
  }

  if (RolesListBox.SelectedItem == null)
  {
    Msg.Text = "Please select a role.";
    return;
  }


  // Create list of users to be removed from the selected role.

  string[] usersList = new string[user_indices.Length];

  for (int i = 0; i < usersList.Length; i++)
  {
    usersList[i] = UsersListBox.Items[user_indices[i]].Value;
  }


  // Remove the users from the selected role.

  try
  {
    Roles.RemoveUsersFromRole(usersList, RolesListBox.SelectedItem.Value);  
    Msg.Text = "User(s) removed from Role.";

    // Rebind users to ListBox.

    users = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
    UsersListBox.DataSource = users;
    UsersListBox.DataBind();
  }
  catch (HttpException e)
  {
    Msg.Text = e.Message;
  } 
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Role Membership</title>
</head>
<body>

<form runat="server" id="PageForm">
  <h3>Role Membership</h3>
  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
  <table cellpadding="3" border="0">
    <tr>
      <td valign="top">Roles:</td>
      <td valign="top"><asp:ListBox id="RolesListBox" AutoPostBack="true" 
                                    OnSelectedIndexChanged="RolesListBox_OnSelectedIndexChanged" 
                                    runat="server" Rows="8" /></td>
      <td valign="top">Users:</td>
      <td valign="top"><asp:ListBox id="UsersListBox" Rows="8" 
                                    SelectionMode="Multiple" runat="server" /></td>
      <td valign="top"><asp:Button Text="Remove User(s) from Role" id="RemoveUsersButton"
                                   runat="server" OnClick="RemoveUsers_OnClick" /></td>
    </tr>
  </table>
</form>

</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Dim rolesArray() As String
Dim users() As String

Public Sub Page_Load()
  Msg.Text = ""

  If Not IsPostBack Then
    ' Bind roles to ListBox.

    rolesArray = Roles.GetAllRoles()
    RolesListBox.DataSource = rolesArray
    RolesListBox.DataBind()
  End If
End Sub

Public Sub RolesListBox_OnSelectedIndexChanged(sender As Object, args As EventArgs)
  ' Bind users to ListBox.

  users = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
  UsersListBox.DataSource = users
  UsersListBox.DataBind()
End Sub

Public Sub RemoveUsers_OnClick(sender As Object, args As EventArgs)
  ' Verify that at least one user and a role are selected.

  Dim user_indices() As Integer = UsersListBox.GetSelectedIndices()

  If user_indices.Length = 0 Then
    Msg.Text = "Please select one or more users."
    Return
  End If

  If RolesListBox.SelectedItem Is Nothing Then
    Msg.Text = "Please select a role."
    Return
  End If


  ' Create list of users to be removed from the selected role.

  Dim usersList(user_indices.Length - 1) As String

  For i As Integer = 0 To usersList.Length - 1
    usersList(i) = UsersListBox.Items(user_indices(i)).Value
  Next


  ' Remove the users from the selected role.

  Try
    Roles.RemoveUsersFromRole(usersList, RolesListBox.SelectedItem.Value)  
    Msg.Text = "User(s) removed from Role."

    ' Rebind users to ListBox.

    users = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
    UsersListBox.DataSource = users
    UsersListBox.DataBind()
  Catch e As HttpException
    Msg.Text = e.Message
  End Try
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Role Membership</title>
</head>
<body>

<form runat="server" id="PageForm">
  <h3>Role Membership</h3>
  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
  <table cellpadding="3" border="0">
    <tr>
      <td valign="top">Roles:</td>
      <td valign="top"><asp:ListBox id="RolesListBox" AutoPostBack="true" 
                                    OnSelectedIndexChanged="RolesListBox_OnSelectedIndexChanged" 
                                    runat="server" Rows="8" /></td>
      <td valign="top">Users:</td>
      <td valign="top"><asp:ListBox id="UsersListBox" Rows="8" 
                                    SelectionMode="Multiple" runat="server" /></td>
      <td valign="top"><asp:Button Text="Remove User(s) from Role" id="RemoveUsersButton"
                                   runat="server" OnClick="RemoveUsers_OnClick" /></td>
    </tr>
  </table>
</form>

</body>
</html>

설명

메서드는 RemoveUsersFromRole 기본 역할 공급자를 호출하여 데이터 원본의 지정된 역할에서 지정된 사용자를 제거합니다.

애플리케이션을 사용 하는 경우는 SqlRoleProvider 클래스를 호출 하는 동안 수행 되는 데이터베이스 업데이트는 RemoveUsersFromRoles 메서드는 트랜잭션 내에서 이루어집니다. 지정된 역할에 없는 사용자 이름과 같은 오류가 발생하면 트랜잭션이 롤백되고 업데이트가 수행되지 않습니다.

적용 대상

추가 정보