我有一个站点地图,其中包含用户未登录时的链接,但是当他们登录时,链接应该更改,例如 nonmember.aspx 应该更改为 member.aspx。该站点地图与 asp:menu 相关联。有谁知道如何做到这一点?
1197 次
2 回答
1
一个简单的解决方案是在站点地图中有两个节点。
- 一个节点显示给匿名用户。
- 一个节点显示为具有安全访问权限的经过身份验证的用户
我相信您可以非常简单地进行设置。
最终结果与更改链接相同,但更易于维护。
添加到此:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode title="Home" url="~/" roles="*">
<siteMapNode url="~/Member.aspx" title="Home" roles="SpecialPeople" />
<siteMapNode url="~/Nonmember.aspx" title="Site Map" roles="HideForUsers" />
</siteMapNode>
</siteMap>
因此,您设置了一个规则,拒绝HideForMembers经过身份验证的用户访问“”角色。是这样的。ASP.NET 将采用它找到匹配项的第一条规则,因此您应该能够以这种方式完成它。
否则,您可以执行 aMenu_OnDataBound并查找节点:
Protected Sub menMainDataBound(ByVal sender As Object, ByVal e As System.EventArgs)
Try
Dim myPage As New Page
Dim myPrincipal As IPrincipal
Dim colNodes As New Collection
myPrincipal = myPage.User
If myPrincipal.Identity.IsAuthenticated = True Then
Dim menNode As MenuItem
For Each menNode In menMain.Items
Select Case menNode.Value.ToString
Case "Products"
colNodes.Add(menNode)
Case "Contact Us"
colNodes.Add(menNode)
Case "About Us"
colNodes.Add(menNode)
Case "Links"
colNodes.Add(menNode)
End Select
Next
For Each menNode In colNodes
menMain.Items.Remove(menNode)
Next
End If
Catch ex As Exception
End Try
End Sub
于 2009-07-09T22:33:02.393 回答
1
以下是您要查找的 web.config 代码:
<location path="Registration.aspx">
<system.web>
<authorization>
<allow users="?" />
<deny users="*" />
</authorization>
</system.web>
</location>
于 2009-08-23T05:13:06.247 回答