2010-03-15 23 views
6

Mi aplicación ASP.NET está utilizando la autenticación de Windows. Si funciono el siguiente código:User.IsInRole return false

WindowsIdentity wi = (WindowsIdentity)User.Identity; 

foreach (IdentityReference r in wi.Groups) 
{ 
    ListBox1.Items.Add(r.Translate (typeof (NTAccount)).Value); 
} 

if (User.IsInRole ("Everyone")) 
    Label1.Text = "Is in role"; 

El cuadro de lista contendrá el nombre de cada grupo pertenece el usuario. Si luego llamo al User.IsInRole y paso el nombre de cualquiera de esos grupos, siempre obtengo un mensaje falso.

¿Alguien puede decirme qué estoy haciendo mal?

Gracias

+1

Gracias por la sugerencia. Lo recordaré en el futuro. – Curtis

+0

Realmente aprecio este código de solución de problemas. – mcfea

Respuesta

7

Tenemos que ver su web.config. ¿Cómo se manejan los roles? ¿El administrador de roles está habilitado?

EDIT:
Es necesario utilizar este formato:

User.IsInRole(@"DOMAINNAME\rolename") 

Usted está dejando fuera el nombre de dominio. Si aún así no funciona, asegúrese de que tenga su conjunto proveedor de papel en web.config:

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/> 

Esta información viene directamente de MSDN. Consulte la sección "Membresía de verificación de roles en el código". Está todo allí.

+1

Estoy apostando a que esto es todo. La identidad está ahí, claro, pero la membresía y los roles son dos cosas muy diferentes. – Aaronaught

+0

Si los grupos y las funciones son dos cosas diferentes, ¿cómo enumeraría todas las funciones a las que pertenece un usuario? – Curtis

+1

System.Web.Security.Roles.GetRolesForUser(). ASP.NET * puede * usar grupos de Windows como Roles, pero eso no es obligatorio ni requerido por defecto; depende completamente de su web.config. – Bryan

Cuestiones relacionadas