2009-05-28 7 views
11

Estoy intentando agregar la autenticación Roles a una Acción en un Controlador en una aplicación ASP.NET MVC. El código es como la siguiente:Roles disponibles con Autenticación de Windows

[Authorize(Roles = "SomeRoleName")] 
public ActionResult Index() 
{ 
    bool inRole = User.IsInRole("Admin"); 

Si quito el atributo Autorizar y poner un punto de interrupción en la última línea en ese ejemplo de código, hay una manera que puedo inspeccionar los objetos y averiguar lo que están disponibles funciones ?

p. Ej. Me llamo User.IsInRole ("Admin) en la ventana Inmediato y me daré un valor verdadero/falso. ¿Cómo puedo acceder a la colección de papeles disponibles?

+0

Puede aclarar su pregunta acerca de si usted está buscando los roles asignados al usuario actual o todas las posibles funciones que un usuario podría pertenecer? –

Respuesta

15

Si no necesita hacer esto mediante programación, pero se está tratando de determinar los grupos de Windows correctas/Clases que necesitan ser especificada, puede utilizar esto desde la línea de comandos:

C:\> net group /domain (lists all Roles in the domain) 
C:\> net user <username> /domain (lists info, including roles for a user) 

lo contrario deberá consultar la parte de LDAP de Active Directory o usar algo en DirectoryServices.

Echa un vistazo a estos sitios web para acceder a Active Directory a través de C#:

+1

Ejecute 'gpresult/Z' desde un símbolo del sistema ... – ErikE

+1

Bueno, el enlace de howto ahora me lleva a 'Fechas chinas'. –

+0

En caso de que alguien más deambule aquí. El enlace para "Cómo: (Casi) Todo en Active Directory a través de C# - Proyecto de código" es: https://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C –

2

Se pueden utilizar los diversos métodos de la clase RoleProvider en el Sistema . .Web.Security.Roles.Provider

Ver esto por más: Role Provider

1

supongo que no está utilizando un proveedor de funciones aquí, pero volver a caer en la funcionalidad subyacente de WindowsPrincipal en el mapa los papeles a los grupos de usuarios. De todos modos, no creo que se pueda hacer más que enumerar los grupos de ventanas disponibles en esa máquina/en ese dominio. No estoy seguro si esto ayuda, pero eso es todo lo que puedo decir sin tener una idea de lo que estás tratando de hacer con dicha lista de roles.

7

Agregar a su web.config bajo system.web:

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

Entonces usted puede usar:

string[] arr = Roles.GetRolesForUser(User.Identity.Name); 

o:

string[] arr = Roles.GetRolesForUser(); 

enter image description here

+1

gracias, esto le da a todos los roles locales y de dominio muy rápido, por ejemplo, el grupo BUILTIN \\ Administrators también –

Cuestiones relacionadas