Sdílet prostřednictvím


Roles.RemoveUsersFromRoles(String[], String[]) Metoda

Definice

Odebere zadaná uživatelská jména ze zadaných rolí.

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

Parametry

usernames
String[]

Pole řetězců uživatelských jmen, která se mají odebrat ze zadaných rolí.

roleNames
String[]

Pole řetězců názvů rolí, ze které chcete odebrat zadané uživatele.

Výjimky

Jednou z rolí zadaných v roleNames souboru je null.

-nebo-

Jedním z uživatelů zadaných v usernames je null.

Jedna z rolí zadaných v roleNames souboru je prázdný řetězec nebo obsahuje čárku (,).

-nebo-

Jeden z uživatelů zadaných v usernames je prázdný řetězec nebo obsahuje čárku (,).

-nebo-

roleNames obsahuje duplicitní prvek.

-nebo-

usernames obsahuje duplicitní prvek.

Správa rolí není povolená.

Příklady

Následující příklad kódu používá metodu RemoveUsersFromRoles k odebrání jednoho nebo více uživatelů z jedné nebo více rolí na základě uživatelského vstupu. Příklad souboru Web.config, který umožňuje správu rolí, najdete v tématu 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;
MembershipUserCollection users;

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

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

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

    // Bind users to ListBox.

    users = Membership.GetAllUsers();
    UsersListBox.DataSource = users;
    UsersListBox.DataBind();
  }
}


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

  int[] user_indices = UsersListBox.GetSelectedIndices();

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

  int[] role_indices = RolesListBox.GetSelectedIndices();

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


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

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

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


  // Create list of roles to be remove the selected users from.

  string[] rolesList = new string[role_indices.Length];

  for (int i = 0; i < rolesList.Length; i++)
  {
    rolesList[i] = RolesListBox.Items[role_indices[i]].Value;
  }


  // Remove the users from the selected roles.

  try
  {
    Roles.RemoveUsersFromRoles(usersList, rolesList);  
    Msg.Text = "User(s) removed from Role(s).";
  }
  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" runat="server" SelectionMode="Multiple"
                                    Rows="8" /></td>
      <td valign="top">Users:</td>
      <td valign="top"><asp:ListBox id="UsersListBox" DataTextField="Username" 
                                  Rows="8" SelectionMode="Multiple" runat="server" /></td>
      <td valign="top"><asp:Button Text="Remove User(s) from Role(s)" 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 MembershipUserCollection

Public Sub Page_Load()

  Msg.Text = ""

  If Not IsPostBack Then
    ' Bind roles to ListBox.

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

    ' Bind users to ListBox.

    users = Membership.GetAllUsers()
    UsersListBox.DataSource = users
    UsersListBox.DataBind()
  End If
End Sub


Public Sub RemoveUsers_OnClick(sender As Object, args As EventArgs)

  ' Verify that at least one user and one 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

  Dim role_indices() As Integer = RolesListBox.GetSelectedIndices()

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


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

  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


  ' Create list of roles to be remove the selected users from.

  Dim rolesList(role_indices.Length - 1) As String

  For i As Integer = 0 To rolesList.Length - 1
    rolesList(i) = RolesListBox.Items(role_indices(i)).Value
  Next


  ' Remove the users from the selected roles.

  Try
    Roles.RemoveUsersFromRoles(usersList, rolesList)  
    Msg.Text = "User(s) removed from Role(s)."
  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" runat="server" SelectionMode="Multiple"
                                    Rows="8" /></td>
      <td valign="top">Users:</td>
      <td valign="top"><asp:ListBox id="UsersListBox" DataTextField="Username" 
                                  Rows="8" SelectionMode="Multiple" runat="server" /></td>
      <td valign="top"><asp:Button Text="Remove User(s) from Role(s)" id="RemoveUsersButton"
                                 runat="server" OnClick="RemoveUsers_OnClick" /></td>
    </tr>
  </table>
</form>

</body>
</html>

Poznámky

Metoda RemoveUsersFromRoles volá výchozího zprostředkovatele role k odebrání zadaných uživatelů ze zadaných rolí ve zdroji dat.

Pokud aplikace používá SqlRoleProvider třídu , aktualizace databáze, které jsou provedeny během volání RemoveUsersFromRoles metody jsou provedeny v rámci transakce. Pokud dojde k chybě, například uživatelské jméno, které není v zadané roli, transakce se vrátí zpět a neprovedou se žádné aktualizace.

Platí pro

Viz také