2010-04-29 9 views
8

¿Es posible especificar que se requieren varias funciones dentro del elemento de autorización del archivo web.config? Actualmente tengo este bloque en una web.config de mi sitio web para un directorio específico:que requiere varias funciones en la autorización Web.config

<authorization> 
    <allow roles="Global, Region" /> 
    <deny users="*" /> 
</authorization> 

yo sólo he identificado un caso concreto de una persona con dos permisos de nivel inferior que global y la Región también debe tener acceso a este directorio Aproximadamente, quiero algo como esto:

<authorization> 
    <allow roles="GlobalManager, RegionManager, SiteManager && FooSite" /> 
    <deny users="*" /> 
</authorization> 

¿Alguna idea? Me doy cuenta de que probablemente debería tener un nuevo rol para este escenario, pero me gustaría evitar eso. ¡Gracias!

+0

Lamentablemente, no creo que esto sea posible. Estoy tratando de hacer lo mismo con un . :-( – Pandincus

Respuesta

3

No creo que pueda hacer esto a través de las configuraciones actuales permitidas en web.config. Lo que podría hacer sin embargo, es algo así como lo siguiente ... como la primera línea en su caso Page_Load de la página en cuestión, utilice el siguiente código (VB):

If Not (User.IsInRole("Role1") AndAlso User.IsInRole("Role2")) Then _ 
    FormsAuthentication.RedirectToLoginPage() 

Esta línea, por supuesto, está asumiendo están usando FormsAuthentication. De lo contrario, deberá reemplazar FormsAuthentication.RedirectToLoginPage() con el código apropiado según su método de autenticación.

No sé exactamente su situación, pero en base a su código, parece que usted podría ir un paso más allá, y añadir una tabla con un mapeo de los usuarios a sitios, y hacer algo como lo siguiente:

En un módulo público, agregue el siguiente código:

<System.Runtime.CompilerServices.Extension()> _ 
Public Function ManagesSite(target As System.Security.Principal.IPrincipal, siteName As String) As Boolean 
    Return [ code here to look up whether this user can access the site specified ] 
End Function 

entonces usted puede escribir el código anterior como algo más lógico, como por ejemplo:

If Not (User.IsInRole("SiteManager") AndAlso User.ManagesSite(Request.Url.Host)) Then _ 
    FormsAuthentication.RedirectToLoginPage() 
3

el método que Suele usarse para resolver esto cuando se configuran las funciones del usuario, se crean roles virtuales. Por lo tanto, si solo desea permitir el acceso de los Administradores de Estudiantes a una página si un usuario tiene las funciones de Estudiante y Administrador, podría agregar un nuevo rol de Administrador de Estudiante.

+0

Me encantaría saber cómo implementaría esto. –

Cuestiones relacionadas