SqlRoleProvider.FindUsersInRole(String, String) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene una matrice di nomi utente con un ruolo in cui il nome utente contiene il nome utente specificato di cui verificare la corrispondenza.
public:
override cli::array <System::String ^> ^ FindUsersInRole(System::String ^ roleName, System::String ^ usernameToMatch);
public override string[] FindUsersInRole (string roleName, string usernameToMatch);
override this.FindUsersInRole : string * string -> string[]
Public Overrides Function FindUsersInRole (roleName As String, usernameToMatch As String) As String()
Parametri
- roleName
- String
Ruolo in cui eseguire la ricerca.
- usernameToMatch
- String
Nome utente da cercare.
Restituisce
Matrice di stringhe contenente i nomi di tutti gli utenti il cui nome utente corrisponde a usernameToMatch
e che sono membri del ruolo specificato.
Eccezioni
roleName
è una stringa vuota o contiene una virgola.
-oppure-
Il parametro usernameToMatch
è una stringa vuota.
-oppure-
La lunghezza di roleName
supera i 256 caratteri.
-oppure-
La lunghezza di usernameToMatch
supera i 256 caratteri.
Impossibile trovare roleName
nel database.
-oppure-
Si è verificato un errore sconosciuto durante la comunicazione con il database.
Esempio
Nell'esempio di codice seguente viene usato il metodo per visualizzare l'appartenenza FindUsersInRole al ruolo in base all'input dell'utente. Per un esempio di file di Web.config che abilita la gestione dei ruoli, vedere Roles.
Importante
Questo esempio contiene una casella di testo che accetta l'input utente, ovvero una potenziale minaccia di sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per altre informazioni, vedere Cenni preliminari sugli attacchi tramite script.
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
string[] users;
public void Page_Load()
{
if (!IsPostBack)
{
RolesListBox.DataSource = Roles.GetAllRoles();
RolesListBox.DataBind();
}
}
public void GoButton_OnClick(object sender, EventArgs args)
{
Msg.Text = "";
users = null;
if (RolesListBox.SelectedItem == null)
{
Msg.Text = "Please select a role.";
return;
}
users = Roles.FindUsersInRole(RolesListBox.SelectedItem.Text, UsernameTextBox.Text);
if (users.Length < 1)
{
Msg.Text = "No matching users found in selected role.";
}
UserGrid.DataSource = users;
UserGrid.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Users</title>
</head>
<body>
<form id="form1" runat="server">
<h3>User List</h3>
<asp:Label id="Msg" runat="Server" ForeColor="red" />
<table border="0" cellpadding="3" cellspacing="3">
<tr>
<td valign="top">Role:</td>
<td valign="top"><asp:ListBox id="RolesListBox" runat="Server" /></td>
</tr>
<tr>
<td valign="top">Username to Search for:</td>
<td valign="top"><asp:TextBox id="UsernameTextBox" runat="server" /></td>
</tr>
</table>
<asp:Button id="GoButton" Text=" Go " OnClick="GoButton_OnClick" runat="server" /><br />
<asp:DataGrid id="UserGrid" runat="server"
CellPadding="2" CellSpacing="1"
Gridlines="Both">
<HeaderStyle BackColor="darkblue" ForeColor="white" />
</asp:DataGrid>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim users() As String
Public Sub Page_Load()
If Not IsPostBack Then
RolesListBox.DataSource = Roles.GetAllRoles()
RolesListBox.DataBind()
End If
End SUb
Public Sub GoButton_OnClick(sender As Object, args As EventArgs)
Msg.Text = ""
users = Nothing
If RolesListBox.SelectedItem Is Nothing Then
Msg.Text = "Please select a role."
Return
End If
users = Roles.FindUsersInRole(RolesListBox.SelectedItem.Text, UsernameTextBox.Text)
If users.Length < 1 Then
Msg.Text = "No matching users found in selected role."
End If
UserGrid.DataSource = users
UserGrid.DataBind()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Find Users</title>
</head>
<body>
<form id="form1" runat="server">
<h3>User List</h3>
<asp:Label id="Msg" runat="Server" ForeColor="red" />
<table border="0" cellpadding="3" cellspacing="3">
<tr>
<td valign="top">Role:</td>
<td valign="top"><asp:ListBox id="RolesListBox" runat="Server" /></td>
</tr>
<tr>
<td valign="top">Username to Search for:</td>
<td valign="top"><asp:TextBox id="UsernameTextBox" runat="server" /></td>
</tr>
</table>
<asp:Button id="GoButton" Text=" Go " OnClick="GoButton_OnClick" runat="server" /><br />
<asp:DataGrid id="UserGrid" runat="server"
CellPadding="2" CellSpacing="1"
Gridlines="Both">
<HeaderStyle BackColor="darkblue" ForeColor="white" />
</asp:DataGrid>
</form>
</body>
</html>
Commenti
Il FindUsersInRole metodo viene chiamato dalla Roles classe e restituisce un elenco di utenti in un ruolo in cui il nome utente contiene una corrispondenza dell'oggetto fornito usernameToMatch
per l'oggetto configurato applicationName
. La SqlRoleProvider ricerca di un nome utente corrispondente al valore del parametro usando la usernameToMatch
parola chiave LIKE e supporta i caratteri jolly di SQL Server. Ad esempio, se il usernameToMatch
parametro è impostato su "user1", le informazioni sull'appartenenza per l'utente con il nome utente "user1" vengono restituite, se esiste. Se il usernameToMatch
parametro è impostato su "user%", le informazioni sull'appartenenza per gli utenti con il nome utente "user1", "user2", "user_admin" e così via vengono restituite.