就是這些!僅需作此改變,站點導航系統就會根據當前登錄的用戶和為在<siteMapNode>元素中的URL定義的授權設置非常聰明地返回正確的部分。下列屏幕快照顯示了當分別在匿名訪問者(還沒有登錄的)、普通用戶以及Admin用戶訪問時的TreeView的顯示情況。該匿名訪問者僅能看到兩個鏈接-Home和 My Blog。普通用戶能看到另外的一個鏈接-Auth Users,而匿名訪問者是看不到它的,因為這個結點的url(/~/AuthUsers/Default.aspx)被配置為僅允許認證用戶觀看。Admin用戶還能看到另外其它鏈接,因為他是管理員角色并且為Admin站點地圖結點(~/Admin/Default.aspx)所指向的URL被配置僅允許由管理員存取。
四、 用角色屬性阻止安全性修剪
可能有一些時候-你想要顯式地通知安全性修剪不要為一個特別的角色或一組角色修剪一個站點地圖部分。例如,如果你的站點地圖包含一個到外部資源的鏈接,那么該站點導航系統不可能針對這個遠程資源確定授權規則。因此,它為所有的用戶修剪該結點。也就是說,如果你啟動了安全性修剪功能并且在用一外部鏈接(如<siteMapNode url="http://www.scottonwriting.net/sowBlog/" title="My Blog"/>)使用一個站點地圖,那么,沒有用戶會在TreeView或Menu控件中看到這些。然而,你可能想要讓該站點導航系統為那些具有Administrator和Tester角色的用戶顯示這一結點。(或不考慮任何用戶的角色。)
同樣,即使他們沒有被授權存取該資源,你也可能想向這些用戶顯示一個局部站點地圖結點。例如,一訪問該站點卻還沒有登錄的用戶肯定不會看到在TreeView中的Admin鏈接。然而,我們仍可能想顯示之。點擊它將會使用戶被導航到~/Admin/Default.aspx頁面,此時,系統將看到他們沒有被認證。這將把他們引導到登錄頁面。在登錄后,他們將被自動地引導回Admin頁面。如果他們不是管理員角色,他們將被送回到登錄頁面,否則他們將被同意存取Admin部分。
為了不修剪針對一個特定的站點地圖結點的特別角色,可以使用在相應的<siteMapNode>元素中的角色屬性。(注意:這一設置不會應用到descendent<siteMapNode>元素;也就是說,對那些顯式地指定另外的應該看到該結點的角色,你必須顯式地在每一個<siteMapNode>元素上設置這一屬性)。此角色屬性能包含一個角色名,一個用逗號間隔列表的角色名字,或一個星號(*)來表示所有的用戶。包含在本文末尾的下載文件中的下列站點地圖文件顯示出怎樣使用角色屬性來使得所有的用戶擁有一個外部的站點地圖結點參考。(可以聯想到,當啟動安全性修剪功能時,如果在此忽略角色屬性,這將導致不向任何用戶顯示這個站點地圖結點。)>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/