これが可能かどうかはわかりませんが、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 のテーブルに基づいて作成した関数ですが、テーブルを維持するのは面倒です。また、将来のプロジェクトでは、元のテーブルをコンパイルするのが面倒になります。それができれば簡単です。これは、既存のグローバル グループに基づいています。
誰にも何か提案がありますか?