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

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

예외

roleNamenull입니다.

-또는-

사용자 이름 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 하는 동안 수행되는 데이터베이스 업데이트가 트랜잭션 내에서 수행됩니다. 지정된 역할에 없는 사용자 이름과 같은 오류가 발생하면 트랜잭션이 롤백되고 업데이트가 수행되지 않습니다.

적용 대상

추가 정보