Use sitemap and role management control the navigation menu

来源:互联网 发布:windows mobile6.5应用 编辑:程序博客网 时间:2024/05/03 06:20

Use sitemap and role management control the navigation menu

Step 1: Create a sitemap file "Web.sitemap"

<?xml version="1.0" encoding="utf-8" ?><siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >  <siteMapNode roles="*">    <siteMapNode title="Home" url="~/Default.aspx" >      <siteMapNode title="ASP.NET AJAX Controls" roles="*"/>      <siteMapNode title="WinForms Controls" roles="*" />      <siteMapNode title="WPF Controls" roles="*"/>      <siteMapNode title="Silverlight Controls" roles="*"/>      <siteMapNode title="Telerik Reporting" roles="User,Administrator"/>      <siteMapNode title="Telerik OpenAccess ORM" roles="User,Administrator"/>      <siteMapNode title="Sitefinity ASP.NET CMS" roles="Administrator"/>      <siteMapNode title="WebUI Test Studio" roles="Administrator"/>    </siteMapNode>    <siteMapNode title="Videos" url="~/Tags.aspx" >      <siteMapNode title="On-site Training" />      <siteMapNode title="Consulting Express" />      <siteMapNode title="Open Classes Training" />      <siteMapNode title="Online Training" />      <siteMapNode title="Project Consulting" />      <siteMapNode title="Telerik Webinars" />    </siteMapNode>    <siteMapNode title="Members" url="~/MemberList.aspx" />    <siteMapNode title="My Page" url="~/MyPage.aspx" />    <siteMapNode title="My Recent Views" url="~/RecentViews.aspx" />    <siteMapNode title="Upload a Video" url="~/Upload.aspx" />    <siteMapNode title="Administer Users" url="~/AdministerUsers.aspx" />  </siteMapNode></siteMap>

Step 2: Add/Modify/Check Membership, Role Management database connection string

  <connectionStrings>    <add name="MyApplicationServices"         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"         providerName="System.Data.SqlClient" />  </connectionStrings>


Step 3:  Config Sitemap provider , Role Manager , Membership Manager in web.config <system,web> node

<system.web>    <compilation debug="true" targetFramework="4.0" />    <siteMap enabled="true">      <providers>        <clear/>        <add siteMapFile="Web.sitemap"              name="AspNetXmlSiteMapProvider"              type="System.Web.XmlSiteMapProvider"              securityTrimmingEnabled="true"/>      </providers>    </siteMap>        <authentication mode="Forms">      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />    </authentication>    <membership>      <providers>        <clear/>        <add name="AspNetSqlMembershipProvider"             type="System.Web.Security.SqlMembershipProvider"              connectionStringName="MyApplicationServices"             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"             applicationName="/" />      </providers>    </membership>    <roleManager enabled="true">      <providers>        <clear />        <add           connectionStringName="MyApplicationServices"           applicationName="/"          name="AspNetSqlRoleProvider"           type="System.Web.Security.SqlRoleProvider" />        <add applicationName="/" name="AspNetWindowsTokenRoleProvider"          type="System.Web.Security.WindowsTokenRoleProvider" />      </providers>    </roleManager>  </system.web>


Note: Use "securityTrimmingEnabled=true" in Sitemap provider configuration

Step 4. Add page access rules under <configuration> node

  <location path="MyPage.aspx"><system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location> <location path="MyPage.aspx"><system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location> <location path="MemberList.aspx"><system.web> <authorization> <allow roles="Administrator"/> <deny users="*"/> </authorization> </system.web> </location>
Step 5. Add Menu to page
<asp:sitemapdatasource runat="server" id="siteMapDataSource" showstartingnode="false" sitemapprovider="AspNetXmlSiteMapProvider">    <asp:menu id="Menu1" runat="server" datasourceid="siteMapDataSource" orientation="Horizontal">Step 

6.Verification ...
原创粉丝点击