Frage

Ich habe benutzerdefinierte Sitemap und Roleprovider, die zusammen richtig funktioniert: IsAccessibleToUser kehrt false, wenn die aktuelle Rolle des Benutzers nicht in SiteMapNode.Roles für gewünschte Seite erwähnt wird,

.

So Paniermehl oder Menü nicht ein Element nicht anzeigen.

Aber Benutzer können noch geben nun zeigte URL direkt und eine Seite öffnen. Wie kann ich ein solches Verhalten blockieren?

Auch habe ich neben Web.config Einstellungen:

<authorization>
    <allow roles="Admin,Manager,Client"  />
    <deny users="*" />
</authorization>
War es hilfreich?

Lösung

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();
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top