| 在ASP.NET 2.0中建立站点导航层次 |
|
|
|
|
| 来源: 作者: 添加日期:2007-2-27 7:27:28 点击次数: |
|
请使用下面三个帐户之一运行示例:
· 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> | 本地化站点地图数据 |
|
| |