Domanda

Ho personalizzato SiteMapProvider e RoleProvider che funziona insieme correttamente: restituisce IsAccessibleToUser false se il ruolo dell'utente corrente non è menzionata in SiteMapNode.Roles per la pagina di richiesta .

Quindi, mollica di pane o il menu non mostra un elemento.

Ma l'utente ancora possibile digitare URL ora ha mostrato direttamente ed aprire una pagina. Come faccio a bloccare un simile comportamento?

Anche io ho le impostazioni prossimi Web.config:

<authorization>
    <allow roles="Admin,Manager,Client"  />
    <deny users="*" />
</authorization>
È stato utile?

Soluzione

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();
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top