2011-01-25 48 views
1

我有一個asp.net菜單的問題。 我有一個有3個孩子的父母菜單。 2的孩子擁有匿名訪問權限,1孩子擁有角色訪問權限。但家長可以訪問 e.g: 家長 - Child A級 - Child B級 - Child C級ASP菜單中的多個角色

Child A級& B具有匿名存取權限或角色,我可以使用 「*」 字符。 但Child C只顯示爲特定角色,而不是匿名。

如何爲父母設置角色?孩子A,B和C在asp.net菜單(.net框架4) 我用sqlsitemapprovider。

回答

0

您也可以將PARENT角色設置爲"*"。只要Child C具有指定的角色,它就會被相應地過濾掉。

因此,對於你的例子做到這一點:

PARENT roles="*" 
    ChildA roles="*" 
    ChildB roles="*" 
    ChildC roles="RoleC" 

如果你有每個節點的特定角色,那麼你會設置這樣的角色:

PARENT roles="RoleA,RoleB,RoleC" 
    ChildA roles="RoleA" 
    ChildB roles="RoleB" 
    ChildC roles="RoleC" 

爲已篩選基於這些角色的這些您需要在您的web.config中啓用啓用安全修整。可以在此處找到指南:http://msdn.microsoft.com/en-us/library/ms178428.aspx

安全修整基於您定義的訪問規則(此處指導:http://msdn.microsoft.com/en-us/library/9ab2fxh0.aspx)。

上面建議的顯式設置角色並不實際限制查看鏈接頁面甚至菜單項本身。這樣做是爲了避免URL授權調用(檢查每個鏈接項目的訪問規則),從而有助於提高性能。所以這是一個好主意,但並不是唯一需要做的事情。

+0

嗨theChrisKent,感謝您的回答,我已經嘗試過您的解決方案,但是當我匿名訪問該頁面時,可以訪問ChildC .. –

+0

@aldi我已經更新了我的答案,以包含有關啓用安全修整的信息去做你正在努力完成的事情。 – theChrisKent