Změnit odkaz na soubor Sitemap založený na tom, zda je přihlášen uživatel?

hlasů
1

Mám Sitemap, který má odkaz pro případ, kdy není uživatel přihlášen, ale když oni dělají přihlášení, spojení by se mělo změnit, například nonmember.aspx by se měl změnit na member.aspx. Tato mapa stránek je vázáno na asp: menu. Ví někdo, jak to udělat?

Položena 09/07/2009 v 23:27
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Níže je web.config kód hledáte:

<location path="Registration.aspx">
    <system.web>
        <authorization>
            <allow users="?" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>
Odpovězeno 23/08/2009 v 06:13
zdroj uživatelem

hlasů
1

Jednoduchým řešením je mít dva uzly v mapě webu.

  1. Jeden uzel se objeví pro anonymní uživatele.
  2. Jeden uzel se objeví na Authenticated uživateli se zabezpečení přístupu

Věřím, že můžete toto nastavení jednoduše.

Konečný výsledek je stejný jako změna odkazu, ale je to jednodušší na údržbu.

Chcete-li přidat k tomu:

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

Takže, můžete nastavit pravidlo, které zakazuje přístup k „ HideForMembers“ role pro ověřené uživatele. Je to něco podobného. ASP.NET bude mít první pravidlo nalezne shodu, takže byste měli být schopni toho dosáhnout tímto způsobem.

V opačném případě byste mohli udělat Menu_OnDataBound, a hledat pro uzel:

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

zdroj

Odpovězeno 09/07/2009 v 23:33
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more