2

ASP.Net でメニューを表示するのを手伝ってくれる人はいますか?

ページにSite.masterナビゲーション メニューがある

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
   <Items>
      <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
      <asp:LoginView>
         <LoggedInTemplate>
            <asp:MenuItem NavigateUrl="~/Securedpage.aspx" Text="Securedpage"/>
         </LoggedInTemplate>
      </asp:LoginView>
   </Items>
</asp:Menu>

最初のメニュー リンクを全員に表示し、2 番目のメニュー リンクをログイン ユーザーにのみ表示する必要があります。ただし、<asp:LoginView>メニュー ブロック内で認識されないようです。抜け道はありますか?

4

4 に答える 4

3

メニュー項目をサイト マップにバインドし、roles 属性を使用できます。これを行うには、Web.Config でセキュリティ トリミングを有効にする必要があります。これが最も簡単な方法です。

サイト ナビゲーションの概要: http://msdn.microsoft.com/en-us/library/e468hxky.aspx

セキュリティ トリミング情報: http://msdn.microsoft.com/en-us/library/ms178428.aspx

SiteMap バインディング情報: http://www.w3schools.com/aspnet/aspnet_navigation.asp

良いチュートリアル/概要: http://weblogs.asp.net/jgalloway/archive/2008/01/26/asp-net-menu-and-sitemap-security-trimming-plus-a-trick-for-when- your-menu-and-security-don-t-match-up.aspx

機能するが理想的ではない別のオプションは、ロールに基づいてコントロールを表示できる loginview コントロールを使用することです。これは、最も速い (ただし、柔軟性/パフォーマンスが最も低い) オプションである可能性があります。ここでガイドを見つけることができます: http://weblogs.asp.net/sukumarraju/archive/2010/07/28/role-based-authorization-using-loginview-control.aspx

于 2012-12-09T08:57:22.893 に答える
0

ログインしたユーザーと匿名ユーザーに別々のマスター テンプレートを使用できます。匿名ユーザーのマスター テンプレートには、すべてのユーザーが表示できるリンクのみを含めることができます。ログイン後に表示するページにログイン ユーザー マスター テンプレートを適用して、ユーザーが期待されるメニューを取得できるようにします。これが役立つことを願っています..

于 2012-12-09T09:33:24.323 に答える
0

ユーザーがログインしている場合にのみ、LoginView アイテムを Items コレクションに追加します。Membership API を使用すると、次の方法でこれを確認できます。

System.Web.HttpContext.Current.User.Identity.IsAuthenticated

これは、メニューに隠れるだけでなく、そのページを保護することも重要です。

于 2012-12-09T08:54:49.140 に答える
0

任意のページのメニュー項目を無効にする場合に機能します。

masterpage.cs ファイルで。

public bool UserMenu
{   
    set { Menu1.Visible = value; }
}

メニューを無効にする page_load の場合。

this.Master.UserMenu = false;
于 2015-11-27T21:57:46.607 に答える