我不确定这是否可行,但我想根据他们在 SQL Server 中创建的特定全局组中的成员身份将我的用户限制在 Intranet 站点的特定区域。
例如,我在 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 表的函数,但是维护表很痛苦,而且未来的项目编译原始表会很痛苦,如果我能做到,它会更容易这基于现有的全球集团。
有人有什么建议吗?