Pregunta

Tengo la costumbre SiteMapProvider y RoleProvider que trabaja en conjunto correctamente: vuelve IsAccessibleToUser false si el papel del usuario actual no se menciona en SiteMapNode.Roles para la página solicitada

.

Así migas de pan o de menú no muestra un elemento.

Pero usuario puede escribir URL ahora mostró directamente y abrir una página. ¿Cómo puedo bloquear este tipo de comportamiento?

También tengo próximos configuración Web.config:

<authorization>
    <allow roles="Admin,Manager,Client"  />
    <deny users="*" />
</authorization>
¿Fue útil?

Solución

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
    var roles = node.Roles.OfType<string>();
    if (roles.Contains("*") || (roles.Count(r => context.User.IsInRole(r)) > 0))
    {
        return true;
    }
    else
    {
        throw new InsufficientRightsException();
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top