Question

Je coutume SiteMapProvider et RoleProvider qui fonctionne ensemble correctement: retourne IsAccessibleToUser false si le rôle de l'utilisateur actuel ne figure pas dans SiteMapNode.Roles pour la page demandée

.

mie de pain ou le menu ne montre pas un élément.

Mais l'utilisateur peut toujours taper l'URL montré maintenant directement et ouvrir une page. Comment puis-je bloquer un tel comportement?

J'ai aussi suivant les paramètres web.config:

<authorization>
    <allow roles="Admin,Manager,Client"  />
    <deny users="*" />
</authorization>
Était-ce utile?

La solution

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();
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top