为什么角色管理不能在我的ASP.NET站点上运行?

时间:2014-05-06 14:23:11

标签: asp.net .net roleprovider

我在ASP.NET中有一个Web应用程序,它有一个站点地图。

如果为用户分配了角色roleX,则必须仅显示其中一个菜单项。

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
    <siteMapNode url="~/" title="Root"  description="...">
      <siteMapNode url="" title="Menu 1"  description="" roles="*">
        <siteMapNode url="~/Default.aspx" title="Item 1"  description=""  roles="*"/>
        <siteMapNode url="~/rss.aspx" title="Subscription"  description="" roles="*" />        
      </siteMapNode>
      <siteMapNode url="~/specialPage.aspx" 
                   title="Some special page" 
                   description="" 
                   roles="roleX"/>
    </siteMapNode>
</siteMap>

在我的web.config我设置了网站地图和角色提供商,如下所示:

<connectionStrings>
    <add name="dbConnectionString" connectionString="Data Source=MY-MACHINE\SQLEXPRESS;Initial Catalog=MyDatabase;Persist Security Info=True;Integrated Security=SSPI" providerName="System.Data.SqlClient"/>
</connectionStrings>

...

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
    <providers>
        <add name="XmlSiteMapProvider"
            description="Default SiteMap provider."
            type="System.Web.XmlSiteMapProvider "
            siteMapFile="Web.sitemap"
            securityTrimmingEnabled="true"/>
    </providers>
</siteMap>

<roleManager 
    defaultProvider="SqlProvider" 
    enabled="true"
    cacheRolesInCookie="false"
    cookieName=".ASPROLES"
    cookieTimeout="30"
    cookiePath="/"
    cookieSlidingExpiration="true"
    cookieProtection="All">
<providers>
    <clear/>
    <add
        name="SqlProvider"
        type="System.Web.Security.SqlRoleProvider"
        connectionStringName="dbConnectionString" 
        applicationName="MyApp" />
</providers>
</roleManager>

有桌子

  1. aspnet_Applications
  2. aspnet_Membership
  3. aspnet_Paths
  4. aspnet_PersonalizationAllUsers
  5. aspnet_PersonalizationPerUser
  6. aspnet_Profile
  7. aspnet_Roles
  8. aspnet_SchemaVersions
  9. aspnet_Users
  10. aspnet_UsersInRoles
  11. aspnet_WebEvent_Events
  12. 数据库MyDatabase中的

    aspnet_UsersInRoles表中没有记录。

    因此,当我启动Web应用程序时,菜单项(站点地图节点)specialPage.aspx不应该可见(因为没有用户分配角色roleX)。

    但它仍然显示出来。

    2个问题:

    1. 为什么?
    2. 如果为用户分配了specialPage.aspx角色,我该怎么做才能让菜单项roleX可见?

0 个答案:

没有答案