SqlRoleProvider.RemoveUsersFromRoles(String[], String[]) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Supprime les noms d'utilisateurs spécifiés des rôles spécifiés.
public:
override void RemoveUsersFromRoles(cli::array <System::String ^> ^ usernames, cli::array <System::String ^> ^ roleNames);
public override void RemoveUsersFromRoles (string[] usernames, string[] roleNames);
override this.RemoveUsersFromRoles : string[] * string[] -> unit
Public Overrides Sub RemoveUsersFromRoles (usernames As String(), roleNames As String())
Paramètres
- usernames
- String[]
Tableau de chaînes contenant les noms d’utilisateur à supprimer des rôles spécifiés.
- roleNames
- String[]
Tableau de chaînes contenant les noms de rôles desquels supprimer les noms d’utilisateur spécifiés.
Exceptions
Un des rôles dans roleNames
est null
.
- ou -
L'un des utilisateurs de usernames
est null
.
Un des rôles dans roleNames
est une chaîne vide ou contient une virgule.
- ou -
Un des utilisateurs dans usernames
est une chaîne vide ou contient une virgule.
- ou -
Un des rôles dans roleNames
dépasse 256 caractères.
- ou -
Un des utilisateurs dans usernames
dépasse 256 caractères.
- ou -
roleNames
contient un élément en double.
- ou -
usernames
contient un élément en double.
Au moins un des noms d'utilisateurs spécifiés n'a pas été trouvé.
- ou -
Au moins un des noms de rôles spécifiés n'a pas été trouvé.
- ou -
Au moins un des noms d'utilisateurs spécifiés n'est pas associé à un ou plusieurs des noms de rôles spécifiés.
- ou -
Une erreur inconnue s'est produite lors de la communication avec la base de données.
Exemples
L’exemple de code suivant ajoute un ou plusieurs utilisateurs à un rôle ou supprime un utilisateur d’un rôle. Pour obtenir un exemple de fichier Web.config qui active la gestion des rôles, consultez SqlRoleProvider.
<%@ 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;
string[] usersInRole;
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();
}
if (RolesListBox.SelectedItem != null)
{
// Show users in role. Bind user list to GridView.
usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
UsersInRoleGrid.DataSource = usersInRole;
UsersInRoleGrid.DataBind();
}
}
public void AddUsers_OnClick(object sender, EventArgs args)
{
// Verify that a role is selected.
if (RolesListBox.SelectedItem == null)
{
Msg.Text = "Please select a role.";
return;
}
// Verify that at least one user is selected.
if (UsersListBox.SelectedItem == null)
{
Msg.Text = "Please select one or more users.";
return;
}
// Create list of users to be added to the selected role.
string[] newusers = new string[UsersListBox.GetSelectedIndices().Length];
for (int i = 0; i < newusers.Length; i++)
{
newusers[i] = UsersListBox.Items[UsersListBox.GetSelectedIndices()[i]].Value;
}
// Add the users to the selected role.
try
{
Roles.AddUsersToRole(newusers, RolesListBox.SelectedItem.Value);
// Re-bind users in role to GridView.
usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
UsersInRoleGrid.DataSource = usersInRole;
UsersInRoleGrid.DataBind();
}
catch (Exception e)
{
Msg.Text = e.Message;
}
}
public void UsersInRoleGrid_RemoveFromRole(object sender, GridViewCommandEventArgs args)
{
// Get the selected user name to remove.
int index = Convert.ToInt32(args.CommandArgument);
string username = ((DataBoundLiteralControl)UsersInRoleGrid.Rows[index].Cells[0].Controls[0]).Text;
// Remove the user from the selected role.
try
{
Roles.RemoveUserFromRole(username, RolesListBox.SelectedItem.Value);
}
catch (Exception e)
{
Msg.Text = "An exception of type " + e.GetType().ToString() +
" was encountered removing the user from the role.";
}
// Re-bind users in role to GridView.
usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
UsersInRoleGrid.DataSource = usersInRole;
UsersInRoleGrid.DataBind();
}
</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" Rows="8" AutoPostBack="true" /></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="Add User(s) to Role" ID="AddUsersButton" runat="server" OnClick="AddUsers_OnClick" /></td>
</tr>
<tr>
<td valign="top">
Users In Role:</td>
<td valign="top">
<asp:GridView runat="server" CellPadding="4" ID="UsersInRoleGrid" AutoGenerateColumns="false"
GridLines="None" CellSpacing="0" OnRowCommand="UsersInRoleGrid_RemoveFromRole">
<HeaderStyle BackColor="navy" ForeColor="white" />
<Columns>
<asp:TemplateField HeaderText="User Name" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField Text="Remove From Role" ButtonType="Link" />
</Columns>
</asp:GridView>
</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
Dim usersInRole() As String
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
If Not RolesListBox.SelectedItem Is Nothing Then
' Show users in role. Bind user list to GridView.
usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
UsersInRoleGrid.DataSource = usersInRole
UsersInRoleGrid.DataBind()
End If
End Sub
Public Sub AddUsers_OnClick(ByVal sender As Object, ByVal args As EventArgs)
' Verify that a role is selected.
If RolesListBox.SelectedItem Is Nothing Then
Msg.Text = "Please select a role."
Return
End If
' Verify that at least one user is selected.
If UsersListBox.SelectedItem Is Nothing Then
Msg.Text = "Please select one or more users."
Return
End If
' Create list of users to be added to the selected role.
Dim newusers(UsersListBox.GetSelectedIndices().Length - 1) As String
For i As Integer = 0 To newusers.Length - 1
newusers(i) = UsersListBox.Items(UsersListBox.GetSelectedIndices(i)).Value
Next
' Add the users to the selected role.
Try
Roles.AddUsersToRole(newusers, RolesListBox.SelectedItem.Value)
' Re-bind users in role to GridView.
usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
UsersInRoleGrid.DataSource = usersInRole
UsersInRoleGrid.DataBind()
Catch e As Exception
Msg.Text = e.Message
End Try
End Sub
Public Sub UsersInRoleGrid_RemoveFromRole(ByVal sender As Object, ByVal args As GridViewCommandEventArgs)
' Get the selected user name to remove.
Dim index As Integer = Convert.ToInt32(args.CommandArgument)
Dim username As String = (CType(UsersInRoleGrid.Rows(index).Cells(0).Controls(0), DataBoundLiteralControl)).Text
' Remove the user from the selected role.
Try
Roles.RemoveUserFromRole(username, RolesListBox.SelectedItem.Value)
Catch e As Exception
Msg.Text = "An exception of type " & e.GetType().ToString() & _
" was encountered removing the user from the role."
End Try
' Re-bind users in role to GridView.
usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
UsersInRoleGrid.DataSource = usersInRole
UsersInRoleGrid.DataBind()
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" Rows="8" AutoPostBack="true" /></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="Add User(s) to Role" ID="AddUsersButton" runat="server" OnClick="AddUsers_OnClick" /></td>
</tr>
<tr>
<td valign="top">
Users In Role:</td>
<td valign="top">
<asp:GridView runat="server" CellPadding="4" ID="UsersInRoleGrid" AutoGenerateColumns="false"
GridLines="None" CellSpacing="0" OnRowCommand="UsersInRoleGrid_RemoveFromRole">
<HeaderStyle BackColor="navy" ForeColor="white" />
<Columns>
<asp:TemplateField HeaderText="User Name" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField Text="Remove From Role" ButtonType="Link" />
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</form>
</body>
</html>
Remarques
La RemoveUsersFromRoles méthode est appelée par la Roles classe pour supprimer un ou plusieurs utilisateurs d’un ou plusieurs rôles dans la base de données SQL Server spécifiée dans le fichier de configuration de l’application ASP.NET (Web.config). Cette méthode est appelée par les RemoveUserFromRoleméthodes , RemoveUserFromRoles, RemoveUsersFromRoleet RemoveUsersFromRoles de la Roles classe .
Les mises à jour de base de données qui sont effectuées pendant l’appel à RemoveUsersFromRoles sont effectuées dans une transaction. Si une erreur est rencontrée, telle qu’un nom d’utilisateur qui n’existe pas ou un nom d’utilisateur qui se trouve déjà dans un rôle spécifié, la transaction est restaurée et aucune mise à jour n’est effectuée.
Les noms d’utilisateur et de rôle ne peuvent pas contenir de virgules.