Udostępnij za pośrednictwem


SqlRoleProvider.FindUsersInRole(String, String) Metoda

Definicja

Pobiera tablicę nazw użytkowników w roli, w której nazwa użytkownika zawiera określoną nazwę użytkownika, która ma być zgodna.

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

Parametry

roleName
String

Rola do wyszukania.

usernameToMatch
String

Nazwa użytkownika do wyszukania.

Zwraca

String[]

Tablica ciągów zawierająca nazwy wszystkich użytkowników, których nazwa użytkownika jest zgodna usernameToMatch , a użytkownik jest członkiem określonej roli.

Wyjątki

roleName is null (Nothing w Visual Basic).

-lub-

usernameToMatch to null.

roleName jest pustym ciągiem lub zawiera przecinek.

-lub-

usernameToMatch jest pustym ciągiem.

-lub-

roleName jest dłuższa niż 256 znaków.

-lub-

usernameToMatch jest dłuższa niż 256 znaków.

roleName nie można odnaleźć w bazie danych.

-lub-

Wystąpił nieznany błąd podczas komunikowania się z bazą danych.

Przykłady

Poniższy przykład kodu używa metody do wyświetlania FindUsersInRole członkostwa roli na podstawie danych wejściowych użytkownika. Aby zapoznać się z przykładem pliku Web.config umożliwiającego zarządzanie rolami, zobacz Roles.

Ważne

Ten przykład zawiera pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web sprawdzają, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).

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

Uwagi

Metoda FindUsersInRole jest wywoływana przez klasę Roles i zwraca listę użytkowników w roli, w której nazwa użytkownika zawiera dopasowanie podane usernameToMatch dla skonfigurowanego applicationNameelementu . Wyszukiwanie SqlRoleProvider nazwy użytkownika zgodnej z wartością parametru usernameToMatch przy użyciu słowa kluczowego LIKE i obsługuje symbole wieloznaczne programu SQL Server. Jeśli na przykład usernameToMatch parametr ma wartość "user1", zwracane są informacje o członkostwie użytkownika o nazwie użytkownika "user1", jeśli istnieje. usernameToMatch Jeśli parametr ma wartość "user%", zwracane są informacje o członkostwie dla użytkowników o nazwie użytkownika "user1", "user2", "user_admin" itd.

Dotyczy

Zobacz też