我是这个网站的新手,过去我在网上研究过很多次,但无法解决这个问题。如果用户未经授权并且我使用的是 Windows 身份验证方法,我基本上想隐藏一个菜单项。我对这段代码的问题是即使我处于管理员角色,名为“Admin”的菜单项也被隐藏了。我基本上在名为 Admin 的文件夹下有一个名为 Admin.aspx 的文件。在 Admin 文件夹中,我有一个 Web 配置,这就是我配置它的方式:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="~/Admin/Authors.aspx"></location>
<system.web>
<authorization>
<deny users="?" />
<allow users="Perf_Mon" />
<allow roles="Perf_Mon" />
</authorization>
</system.web>
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Deny" users="?" />
<add accessType="Allow" roles="Admin" />
</authorization>
</security>
</system.webServer>
</configuration>
我还在母版页文件中使用后面的代码,因为我的所有菜单都在那里,代码在这里:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not Roles.IsUserInRole("Admin") Then
Dim menuItems As MenuItemCollection = NavigationMenu.Items
Dim adminItem As New MenuItem()
For Each menuItem As MenuItem In menuItems
If menuItem.Text = "Admin" Then
adminItem = menuItem
End If
Next
menuItems.Remove(adminItem)
End If
End Sub
所以我想知道为什么即使我处于管理员角色,管理员菜单也对我隐藏。我不确定我做错了什么。谢谢 这是母版页的 ASP 文件
<body>
<form id="Form1" runat="server">
<div class="page">
<div class="header">
<div class="title">
<h1>
Home Page
</h1>
</div>
<div class="loginDisplay">
<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
<AnonymousTemplate>
[ <a href="~/Account/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a>
]
</AnonymousTemplate>
<LoggedInTemplate>
Welcome <span class="bold">
<asp:LoginName ID="HeadLoginName" runat="server" />
</span>! [
<asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out"
LogoutPageUrl="~/" />
]
</LoggedInTemplate>
</asp:LoginView>
</div>
<div class="clear hideSkiplink">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Admin/Authors.aspx" Text="Admin" />
<asp:MenuItem NavigateUrl="~/Users/MyTest1.aspx" Text="Summary" />
<asp:MenuItem NavigateUrl="~/Users/MyTest2.aspx" Text="Details" />
</Items>
</asp:Menu>
</div>
</div>
<div class="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
<div class="clear">
</div>
</div>
<div class="footer">
</div>
</form>
</body>
它在这一行中引用了母版页,我们如何将其更改为引用站点地图?
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" MaintainScrollPositionOnPostback="true" CodeFile="Authors.aspx.cs" Inherits="Admin_Authors1" %>