SqlRoleProvider.FindUsersInRole(String, String) Methode

Definition

Ruft ein Array von Benutzernamen in einer Rolle ab, die mit den angegebenen Benutzernamen übereinstimmen.

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()

Parameter

roleName
String

Die Rolle, in der gesucht werden soll.

usernameToMatch
String

Der zu suchende Benutzername.

Gibt zurück

String[]

Ein Zeichenfolgenarray, das die Namen aller Benutzer enthält, deren Benutzername mit usernameToMatch übereinstimmt und die Mitglied der angegebenen Rolle sind.

Ausnahmen

roleName ist null (Nothing in Visual Basic).

- oder -

usernameToMatch ist null.

roleName ist eine leere Zeichenfolge oder enthält ein Komma.

- oder -

usernameToMatch ist eine leere Zeichenfolge.

- oder -

roleName ist länger als 256 Zeichen.

- oder -

usernameToMatch ist länger als 256 Zeichen.

roleName wurde in der Datenbank nicht gefunden.

- oder -

Während der Kommunikation mit der Datenbank ist ein unbekannter Fehler aufgetreten.

Beispiele

Im folgenden Codebeispiel wird die -Methode verwendet, um die FindUsersInRole Rollenmitgliedschaft basierend auf der Benutzereingabe anzuzeigen. Ein Beispiel für eine Web.config-Datei, die die Rollenverwaltung aktiviert, finden Sie unter Roles.

Wichtig

Dieses Beispiel enthält ein Textfeld, das Benutzereingaben akzeptiert, was eine potenzielle Sicherheitsbedrohung darstellt. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

<%@ 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>

Hinweise

Die FindUsersInRole -Methode wird von der Roles -Klasse aufgerufen und gibt eine Liste von Benutzern in einer Rolle zurück, in der der Benutzername eine Übereinstimmung mit dem für den konfigurierten applicationNameenthältusernameToMatch. Die SqlRoleProvider sucht nach einem Benutzernamen, der dem usernameToMatch Parameterwert entspricht, und verwendet das Schlüsselwort LIKE und unterstützt SQL Server-Feldhalterzeichen. Wenn der usernameToMatch Parameter beispielsweise auf "user1" festgelegt ist, werden Mitgliedschaftsinformationen für den Benutzer mit dem Benutzernamen "user1" zurückgegeben, sofern vorhanden. Wenn der usernameToMatch Parameter auf "user%" festgelegt ist, werden Mitgliedschaftsinformationen für Benutzer mit dem Benutzernamen "user1", "user2", "user_admin" usw. zurückgegeben.

Gilt für:

Weitere Informationen