国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在ASP.NET 2.0中建立站點導航層次(3)

2024-07-10 13:12:42
字體:
來源:轉載
供稿:網友

  站點導航的安全性

  站點導航特性可以根據授權規則過慮提供程序所返回的sitemapnode實例。xmlsitemapprovider可以根據當前網站使用的文件和url授權規則過慮節點。

  下面的例子使用了窗體授權規則,預定義的用戶憑證存儲在web.config中。在global.asax中,根據用戶名,用戶的角色都被附加到當前的請求上。在web.config中,嵌套在元素之下的站點地圖提供程序使用的元素的securitytrimmingenabled屬性被設置為真。同時,web.config文件的末尾定義了一組url授權規則。當你運行示例并登陸之后,xmlsitemapprovider會自動地依據用戶所屬的角色和web.config中定義的授權規則來對sitemapnode執行授權檢測。

  請使用下面三個帳戶之一運行示例:

  · userid: sectionone password: sectionone

  · userid: sectiontwo password: sectiontwo

  · userid: allsections password: allsections

  在頁面的右上角有一個"退出"鏈接,因此你可以用不同的帳號登陸和退出。請注意,根據你登陸所使用的帳號不同,導航ui顯示的treeview和menu控件會自動地反映該用戶所獲得的訪問權限。提供程序自動地過慮了返回的節點--實現這種功能不需要額外的代碼。用"sectionone"帳號登陸的時候,只在左邊的treeview控件中顯示"sectionone"鏈接和外部鏈接。用"sectiontwo"帳號登陸的時候,只在左邊的treeview控件中顯示"sectiontwo"鏈接和外部鏈接。用"allsections"帳號登陸的時候,treeview控件中顯示了所有的鏈接。web.config中的授權規則配置為給"sectionone"和"sectiontwo"層次授予了部分訪問權力。

  這個示例還演示了如何處理應用程序目錄范圍之外的url安全性。在web.sitemap文件中,外部鏈接的節點使用了roles屬性。語法roles="*"授予所有用戶訪問和查看導航控件中的節點的權力。語法roles="adminstrators,regular users"只允許這些角色的用戶檢索和查看導航控件中的節點。由于在示例中global.asax文件把用戶分成了這兩種角色,所以你一直可以看到外部鏈接。

  開發者可以選擇同時使用文件/url授權規則和roles屬性來控制用戶對sitemapnode實例的訪問權。如果兩者的設置信息都是正確的,站點導航提供程序就會根據文件/url授權規則和roles屬性中的角色來對當前用戶進行認證。如果當前用戶通過了任何一種授權檢查,就可以訪問節點。

  如果默認的安全性操作不適用于你的應用程序,開發者還可以從xmlsitemapprovider衍生類,并用自定義的節點授權實現來重載isaccessibletouser方法。

  web.config的內容

  以下是引用片段:
<system.web>  
<authentication mode="forms">  
<forms name=".aspxauth" loginurl="login.aspx" protection="all" timeout="30" path="/" requiressl="false" slidingexpiration="true" defaulturl="home.aspx" cookieless="usecookies" enablecrossappredirects="false">  
<credentials passwordformat="clear">  
<user name="sectionone" password="sectionone"/>  
<user name="sectiontwo" password="sectiontwo"/>  
<user name="allsections" password="allsections"/>  
</credentials>  
</forms>  
</authentication>  
<authorization>  
<deny users="?"/>  
</authorization>  
</system.web>  
<location path="sectionone.aspx">  
<system.web>  
<authorization>  
<allow users="sectionone" roles="administrators" />  
<deny users="*"/>  
</authorization>  
</system.web>  
</location>  
<location path="sectionone">  
<system.web>  
<authorization>  
<allow users="sectionone" roles="administrators"/>  
<deny users="*"/>  
</authorization>  
</system.web>  
</location>  
<location path="sectiontwo.aspx">  
<system.web>  
<authorization>  
<allow users="sectiontwo" roles="administrators"/>  
<deny users="*"/>  
</authorization>  
</system.web>  
</location>  
<location path="sectiontwo">  
<system.web>  
<authorization>  
<allow users="sectiontwo" roles="administrators"/>  
<deny users="*"/>  
</authorization>  
</system.web> 

  本地化站點地圖數據

  存儲在sitemap文件中的導航數據可能需要進行本地化(localize)。元素中的url、title和description屬性也可以本地化。此外,開發者放置在元素中的任何自定義屬性也可以本地化。

  下面的示例包含了英語和法語的本地化文本。它的web.sitemap文件使用兩種類型(隱式的和顯式的)的本地化表達式來實現這種功能。sitemap文件在根sitemap元素中使用了enablelocalization=true就表明它使用了本地化數據。

  站點地圖文件的隱式表達式讓開發者能夠輕易地用查找鍵(lookup key)標記每個元素,而查找鍵是用于從資源文件檢索資源的。在示例的web.sitemap中,除了第一個節點之外,所有的節點都有隱式的資源表達式。它的語法類似resourcekey="autos"。當xmlsitemapprovider根據web.sitemap文件中的信息檢索sitemapnode的時候,它根據sitemapnode屬性的名稱、resourcekey和為提供程序配置的sitemapfile屬性的值來檢索字符串資源。使用示例中的"autos"節點的時候,提供程序(provider)會根據當前的文化來查找以"web.sitemap"開頭的資源文件。這意味著,對于一個發送法語頭信息的瀏覽器來說,提供程序會查找名稱為web.sitemap.fr.resx的資源文件。在這個資源文件中,提供程序會依據resourcekey + "." + [sitemapnode屬性名]來查找資源鍵。例如,把"autos"節點的title屬性當作例子,提供程序會在web.sitemap.fr.resx資源文件中查找鍵為autos.title的資源。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铁岭市| 左贡县| 康马县| 溧水县| 通州市| 郯城县| 张北县| 永兴县| 沙坪坝区| 桐庐县| 宣威市| 财经| 景泰县| 重庆市| 横山县| 城口县| 新安县| 淄博市| 敦化市| 武胜县| 遂川县| 祥云县| 游戏| 山西省| 盘山县| 景东| 龙江县| 临颍县| 华蓥市| 台江县| 平凉市| 图们市| 思茅市| 玉屏| 丰原市| 石门县| 治县。| 门头沟区| 西宁市| 淮滨县| 乌拉特前旗|