7

これが可能かどうかはわかりませんが、SQL Server で作成された特定のグローバル グループのメンバーシップに基づいて、ユーザーをイントラネット サイトの特定の領域に限定したいと考えています。

たとえば、ASP に次のメニューがあります。

    <div class="clear hideSkiplink" id="MainMenu">

        <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" 
            IncludeStyleBlock="False" Orientation="Horizontal" 
            BackColor="#CC3300">

            <Items> 
                <asp:MenuItem  NavigateUrl="~/Default.aspx" Text="Home" Selectable="true" />
                    <asp:MenuItem NavigateUrl="~/Forms/frmCensusList.aspx" Text="Census Editing"/>
                    <asp:MenuItem NavigateUrl="~/Forms/frmRoster.aspx" Text="Roster Editing"/>
                    <asp:MenuItem NavigateUrl="~/Forms/frmReportMenu.aspx" Text="Reporting"/>
                    <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
                   <%-- <asp:MenuItem NavigateUrl="~/WebForm1.aspx" Text="Test"/>--%>
            </Items>

        </asp:Menu>
    </div> 

そして、コード ビハインドの次のコードは、「セキュリティ レベル」が「バージョン情報」ページを表示できるかを制限します。

protected void Page_Load(object sender, EventArgs e)
{
    string path = Request.AppRelativeCurrentExecutionFilePath;
    foreach (MenuItem item in NavigationMenu.Items)
    {
        item.Selected = item.NavigateUrl.Equals(path, StringComparison.InvariantCultureIgnoreCase);
    }

    // If the user isn't an Admin, hide the About menu option
    string ActiveUser = System.Web.HttpContext.Current.User.Identity.Name;
    string SecurityLevel = ActiveUser.SecLevel();
    if (SecurityLevel != "ADMIN")
    {
        MenuItem mnuItem = NavigationMenu.FindItem("About"); // Find particular item
        if (mnuItem != null)
        {
            NavigationMenu.Items.Remove(mnuItem);
        }
    }

}

SecLevel() は、ユーザーの ID のテーブルに基づいて作成した関数ですが、テーブルを維持するのは面倒です。また、将来のプロジェクトでは、元のテーブルをコンパイルするのが面倒になります。それができれば簡単です。これは、既存のグローバル グループに基づいています。

誰にも何か提案がありますか?

4

4 に答える 4

1

1. MainMasterPage と UserMasterPage と AdminMasterPage を作成します。
2.UserMasterPage と AdminMasterPage は MainMasterPage から使用します。
3.MainMasterPageにメニューを入力します。
4.ユーザーとパスワードが有効な場合のログインページ:

Session["ActiveUser"] = txtUsername.Text;
Session["SecurityLevel"] = //get role to ActiveUser from database and set to this session.

5.in UserMasterPage Page_Load:

if(Session["SecurityLevel"]==null)
    {
        Response.Redirect("~/login.aspx");//go to login page
    }
    else
    {
        if(Session["SecurityLevel"].ToString()!="User")
        {
             Response.Redirect("~/login.aspx");//go to login page
        }
    }

6.in AdminMasterPage Page_Load:

if (Session["SecurityLevel"] == null)
    {
        Response.Redirect("~/login.aspx");//go to login page
    }
    else
    {
        if (Session["SecurityLevel"].ToString() != "ADMIN")
        {
            Response.Redirect("~/login.aspx");//go to login page
        }
    }

7.次に、管理ページは AdminMasterPage から使用し、ユーザー ページは UserMasterPage から使用します。

于 2013-08-17T02:52:26.403 に答える
0

使用する方が簡単です

NavigationMenu.Items.RemoveAt(0);

これにより、最初のメニュー項目が削除されます

NavigationMenu.Items[0].ChildItems.RemoveAt(1);

これにより、最初のメニュー項目の 2 番目の子が削除されます

NavigationMenu.Items[0].ChildItems[1].ChildItems.RemoveAt(1)

これにより、最初のメニュー項目の 2 番目の子の 2 番目の子が削除されます

于 2013-08-21T11:24:54.740 に答える