1

我有一个站点地图,其中包含用户未登录时的链接,但是当他们登录时,链接应该更改,例如 nonmember.aspx 应该更改为 member.aspx。该站点地图与 asp:menu 相关联。有谁知道如何做到这一点?

4

2 回答 2

1

一个简单的解决方案是在站点地图中有两个节点。

  1. 一个节点显示给匿名用户。
  2. 一个节点显示为具有安全访问权限的经过身份验证的用户

我相信您可以非常简单地进行设置。

最终结果与更改链接相同,但更易于维护。

添加到此:

<?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 回答