質問

適切に連携するカスタムSiteMapproviderとRoleProviderがあります。 IsAccessibleToUser 戻り値 false 現在のユーザーの役割が言及されていない場合 SiteMapNode.Roles 要求されたページ用。

したがって、パン粉やメニューにはアイテムが表示されません。

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

また、次のweb.config設定があります:

<authorization>
    <allow roles="Admin,Manager,Client"  />
    <deny users="*" />
</authorization>
役に立ちましたか?

解決

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();
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top