0

ローカルイントラネット用のメニューとユーザーデータを格納するOracleデータベースがあります。

データには、どのユーザーがどのページにアクセスできるかが含まれます。

もともと私はStaticSiteMapProviderクラスを拡張するクラスを作成しましたが、これがテスト環境に入ると、これはサイト全体(ユーザーベースではなく)にキャッシュされていることがわかりました。さまざまなフォーラムでオンラインで読んだ後、SiteMapProviderから継承する必要があることが提案されました。これにより、SiteMapProviderとASP:MENUアイテムのインスタンスをユーザーベースで分離できるようになりますが、それでも問題は解決していません。 。

現在、asp:menuを制限し、カスタムサイトマッププロバイダーをデータソースとして使用するユーザーコントロールがあります。

データベース認証に基づいて、ユーザーベースでメニューを表示する方法を誰かが提案できますか?

また、メニュー全体がすべてのユーザーに表示されます。メニューノードをクリックした後でのみ、そのページ/ノードにアクセスできるかどうかがわかります。

ありがとう

4

2 に答える 2

0

サイトマップの役割を利用して、表示されるメニューを定義できます。

于 2011-04-12T08:59:08.870 に答える
0

ここには2つのことがあります。ノードの静的コレクションがあり、ユーザーのアクセシビリティに基づいてそれらを表示/非表示にする場合は、 IsAccessibleToUser メソッドをオーバーライドして、指定されたノードが現在のユーザーに適用可能かどうかを確認する必要があります (指定された HttpContext からアクセス可能)。

場合によっては、ノードのコレクション/階層がユーザーごとに変更され、 BuildSiteMapをオーバーライドして、現在のユーザーのさまざまなノードをロードしてみてください。ただし、この場合、 StaticSiteMapProvider が正しい基本クラスであるかどうかは少し疑わしいです。おそらく、からオーバーライドする必要がありますSiteMapProvider

于 2011-04-12T09:05:14.497 に答える