0

正しく連携するカスタムSiteMapProviderとRoleProviderがあります。要求されたページに現在のユーザーの役割が記載されていない場合IsAccessibleToUserに返されます。falseSiteMapNode.Roles

そのため、パンくずリストやメニューにはアイテムが表示されません。

ただし、ユーザーは表示されたURLを直接入力して、ページを開くことができます。どうすればそのような動作をブロックできますか?

また、次のWeb.config設定があります。

<authorization>
    <allow roles="Admin,Manager,Client"  />
    <deny users="*" />
</authorization>
4

1 に答える 1

0
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();
    }
}
于 2010-05-25T09:55:05.777 に答える