2009-07-09 28 views

回答

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會首先找到匹配的規則,所以你應該可以通過這種方式來完成它。

否則,你可以做一個Menu_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 

source

+0

待辦事項你有一個例子嗎? – Xaisoft 2009-07-09 22:40:29

1

下面是你要找的Web.config代碼:

<location path="Registration.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="?" /> 
      <deny users="*" /> 
     </authorization> 
    </system.web> 
</location> 
相關問題