Condividi tramite


WindowsTokenRoleProvider.IsUserInRole Metodo

Definizione

Ottiene un valore che indica se l'utente specificato appartiene al ruolo Windows incorporato specificato.

Overload

IsUserInRole(String, WindowsBuiltInRole)

Ottiene un valore che indica se l'utente specificato appartiene al ruolo Windows incorporato specificato.

IsUserInRole(String, String)

Ottiene un valore che indica se l'utente specificato appartiene al gruppo Windows specificato.

IsUserInRole(String, WindowsBuiltInRole)

Ottiene un valore che indica se l'utente specificato appartiene al ruolo Windows incorporato specificato.

public:
 bool IsUserInRole(System::String ^ username, System::Security::Principal::WindowsBuiltInRole role);
public bool IsUserInRole (string username, System.Security.Principal.WindowsBuiltInRole role);
override this.IsUserInRole : string * System.Security.Principal.WindowsBuiltInRole -> bool
Public Function IsUserInRole (username As String, role As WindowsBuiltInRole) As Boolean

Parametri

username
String

Nome utente di cui eseguire la ricerca nel formato DOMINIO\nomeutente.

role
WindowsBuiltInRole

Ruolo Windows in cui eseguire la ricerca.

Restituisce

true se l'utente specificato appartiene al ruolo Windows specificato; in caso contrario, false.

Eccezioni

username è null.

L'utente correntemente in esecuzione non dispone di un oggetto WindowsIdentity autenticato collegato alla proprietà User. In scenari non HTTP, l'utente correntemente in esecuzione non dispone di un oggetto WindowsIdentity autenticato collegato alla proprietà CurrentPrincipal.

-oppure-

username non corrisponde alla proprietà Name dell'oggetto WindowsIdentity corrente.

Esempio

Nell'esempio di codice seguente viene verificato a livello di codice se l'utente attualmente connesso è nel ruolo Administrators prima di consentire all'utente di visualizzare le informazioni sui ruoli per l'applicazione. Per un esempio di file di Web.config che abilita la gestione dei ruoli, vedere 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>

Commenti

Il IsUserInRole metodo consente di verificare se un utente si trova in uno dei ruoli comuni di Windows descritti dall'enumerazione WindowsBuiltInRole . Questo metodo è utile per le applicazioni localizzate in più lingue. Questo overload del IsUserInRole metodo non fa parte della RoleProvider classe base ed è accessibile solo eseguendo il cast della Provider proprietà della Roles classe come WindowsTokenRoleProvider tipo .

È possibile chiamare il IsUserInRole metodo solo per l'utente attualmente connesso, come identificato dalla variabile del server LOGON_USER. Se il valore specificato nel username parametro non è il nome dell'utente attualmente connesso, viene generata un'eccezione HttpException .

IsUserInRole il metodo può essere chiamato solo per l'utente attualmente connesso identificato dalla variabile del server LOGON_USER. L'utente connesso corrente deve essere un utente autenticato di Windows. Per altre informazioni sull'autenticazione di ASP.NET e Windows, vedere autenticazione di ASP.NET.

Vedi anche

Si applica a

IsUserInRole(String, String)

Ottiene un valore che indica se l'utente specificato appartiene al gruppo Windows specificato.

public:
 override bool IsUserInRole(System::String ^ username, System::String ^ roleName);
public override bool IsUserInRole (string username, string roleName);
override this.IsUserInRole : string * string -> bool
Public Overrides Function IsUserInRole (username As String, roleName As String) As Boolean

Parametri

username
String

Nome utente di cui eseguire la ricerca nel formato DOMINIO\nomeutente.

roleName
String

Gruppo Windows di cui eseguire la ricerca nel formato DOMINIO\nomeutente.

Restituisce

true se il nome utente specificato appartiene al gruppo Windows specificato; in caso contrario, false.

Eccezioni

username è null.

-oppure-

roleName è null.

L'utente correntemente in esecuzione non dispone di un oggetto WindowsIdentity autenticato collegato alla proprietà User. In scenari non HTTP, l'utente correntemente in esecuzione non dispone di un oggetto WindowsIdentity autenticato collegato alla proprietà CurrentPrincipal.

-oppure-

username non corrisponde alla proprietà Name dell'oggetto WindowsIdentity corrente.

-oppure-

Errore durante il recupero delle informazioni sui gruppi Windows dell'utente.

Esempio

Nell'esempio di codice seguente viene verificato a livello di codice se l'utente attualmente connesso è nel ruolo Administrators prima di consentire all'utente di visualizzare le informazioni sui ruoli per l'applicazione. Per un esempio di file di Web.config che abilita la gestione dei ruoli, vedere WindowsTokenRoleProvider.

<%@ 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[] rolesArray;

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

  try
  {
    if (!Roles.IsUserInRole(User.Identity.Name, @"BUILTIN\Administrators"))
    {
      Msg.Text = "You are not authorized to view user roles.";
      return;
    }
  }
  catch (HttpException e)
  {
    Msg.Text = "There is no current logged on user. Role membership cannot be verified.";
    return;
  }


  // Bind roles to GridView.

  rolesArray = Roles.GetRolesForUser(User.Identity.Name);
  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 = ""

  Try
    If Not Roles.IsUserInRole(User.Identity.Name, "BUILTIN\Administrators") Then
      Msg.Text = "You are not authorized to view user roles."
      Return
    End If
  Catch e As HttpException
    Msg.Text = "There is no current logged on user. Role membership cannot be verified."
    Return
  End Try

  ' Bind roles to GridView.

  rolesArray = Roles.GetRolesForUser(User.Identity.Name)
  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>

Commenti

Il IsUserInRole metodo viene chiamato dalla Roles classe e dal IsInRole metodo della User proprietà per determinare se un utente si trova in un gruppo di Windows. È possibile chiamare il IsUserInRole metodo solo per l'utente attualmente connesso, come identificato dalla variabile del server LOGON_USER. L'utente connesso corrente deve essere un utente autenticato di Windows. Per altre informazioni sull'autenticazione di ASP.NET e Windows, vedere autenticazione di ASP.NET.

Vedi anche

Si applica a