Roles.Provider Vlastnost

Definice

Získá výchozího zprostředkovatele role pro aplikaci.

public:
 static property System::Web::Security::RoleProvider ^ Provider { System::Web::Security::RoleProvider ^ get(); };
public static System.Web.Security.RoleProvider Provider { get; }
member this.Provider : System.Web.Security.RoleProvider
Public Shared ReadOnly Property Provider As RoleProvider

Hodnota vlastnosti

RoleProvider

Výchozí zprostředkovatel role pro aplikaci, který je vystaven jako třída, která dědí RoleProvider abstraktní třídu.

Výjimky

Správa rolí není povolená.

Příklady

Následující příklad kódu přetypuje výchozího zprostředkovatele role jako zprostředkovatele WindowsTokenRoleProvider a před povolením zobrazení nastavení rolí pro aplikaci zkontroluje, jestli je aktuálně přihlášený uživatel v roli Administrators. Příklad souboru Web.config, který umožňuje správu rolí, najdete v tématu WindowsTokenRoleProvider.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Security.Principal" %>
<!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;

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

  WindowsPrincipal p = (WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;

  if (!p.IsInRole(WindowsBuiltInRole.Administrator))
  {
    Msg.Text = "You are not authorized to view user roles.";
    return;
  }


  // Bind roles to GridView.

  try
  {
    rolesArray = Roles.GetRolesForUser(User.Identity.Name);
  }
  catch (HttpException e)
  {
    Msg.Text = "There is no current logged on user. Role membership cannot be verified.";
    return;
  }

  UserRolesGrid.DataSource = rolesArray;
  UserRolesGrid.DataBind();

  UserRolesGrid.Columns[0].HeaderText = "Roles for " + User.Identity.Name;
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: View User Roles</title>
</head>
<body>

<form runat="server" id="PageForm">

  <h3>View User Roles</h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

  <table border="0" cellspacing="4">
    <tr>
      <td valign="top"><asp:GridView runat="server" CellPadding="4" id="UserRolesGrid" 
                                     AutoGenerateColumns="false" Gridlines="None" 
                                     CellSpacing="0" >
                         <HeaderStyle BackColor="navy" ForeColor="white" />
                         <Columns>
                           <asp:TemplateField HeaderText="Roles" >
                             <ItemTemplate>
                               <%# Container.DataItem.ToString() %>
                             </ItemTemplate>
                           </asp:TemplateField>
                         </Columns>
                       </asp:GridView></td>
    </tr>
  </table>

</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 rolesArray() As String

Public Sub Page_Load()
  Msg.Text = ""

  Dim provider As WindowsTokenRoleProvider = CType(Roles.Provider, WindowsTokenRoleProvider)

  If Not provider.IsUserInRole(User.Identity.Name, _
                               System.Security.Principal.WindowsBuiltInRole.Administrator) Then
    Msg.Text = "You are not authorized to view user roles."
    Return
  End If


  ' Bind roles to GridView.

  Try
    rolesArray = Roles.GetRolesForUser(User.Identity.Name)
  Catch e As HttpException
    Msg.Text = "There is no current logged on user. Role membership cannot be verified."
    Return
  End Try

  UserRolesGrid.DataSource = rolesArray
  UserRolesGrid.DataBind()

  UserRolesGrid.Columns(0).HeaderText = "Roles for " & User.Identity.Name
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: View User Roles</title>
</head>
<body>

<form runat="server" id="PageForm">

  <h3>View User Roles</h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

  <table border="0" cellspacing="4">
    <tr>
      <td valign="top"><asp:GridView runat="server" CellPadding="4" id="UserRolesGrid" 
                                     AutoGenerateColumns="false" Gridlines="None" 
                                     CellSpacing="0" >
                         <HeaderStyle BackColor="navy" ForeColor="white" />
                         <Columns>
                           <asp:TemplateField HeaderText="Roles" >
                             <ItemTemplate>
                               <%# Container.DataItem.ToString() %>
                             </ItemTemplate>
                           </asp:TemplateField>
                         </Columns>
                       </asp:GridView></td>
    </tr>
  </table>

</form>

</body>
</html>

Poznámky

Tato Provider vlastnost umožňuje přímo odkazovat na výchozího zprostředkovatele rolí pro aplikaci. Běžně se používá pro přístup k vlastním členům zprostředkovatele role, kteří nejsou součástí RoleProvider abstraktní třídy.

Třída například obsahuje přetížení IsUserInRole metody, která umožňuje určit, WindowsTokenRoleProvider zda je uživatel v běžné Windows roli pomocí hodnoty výčtuWindowsBuiltInRole. Odkaz na WindowsTokenRoleProvider třídu pro aplikaci lze získat pomocí Provider vlastnosti a lze ji přetypovat jako odkaz WindowsTokenRoleProvider na IsUserInRole přetížení.

Pokud je pro aplikaci nakonfigurovaných více poskytovatelů rolí, můžete pomocí kolekce přistupovat k různým poskytovatelům Providers rolí.

Platí pro

Viz také