私が持っているものがうまくいくと言うことから始めましょう-私はそれが好きではありません.
ナビゲーション バーに使用する web.sitemap があります。全員がアクセスできるノードもあれば、役割が割り当てられているノードもあります (アクセスできないユーザーにはノードが表示されないようにするため)。
すなわち<siteMapNode url="~/adminpage.aspx" title="admin" roles="domain\Administrators"/>
次に、私の web.config には、次のような場所の要素があります。
<location path="adminpage.aspx">
<system.web>
<authorization>
<allow roles="domain\Administrators"/>
<deny roles="*"/>
</authorization>
</system.web>
</location>
これに加えて、一部のページには、次のようにロールに基づいて表示または非表示になるハイパーリンクがあります。
myHyperlink.Visible = Roles.IsUserInRole(@"domain\Administrators");
これはすべて問題なく機能しますが、少しばかげているようです。サイトマップと Roles.IsUserInRole によって Web.config で確立されたアクセス許可を利用する方法はありますか? 基本的に、私は 435234 の異なる場所で同じ権限の説明を持たないようにしています。
Casses ソリューションを使用して、Web 構成の設定を使用する埋め込みコードをサイトマップ ファイルに追加しようとしましたが、うまくいきません (サイトマップ ファイルに埋め込みコードを配置できないため)。