Use sitemap and role management control the navigation menu

阎功
2023-12-01

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 ...
 类似资料:

相关阅读

相关文章

相关问答