1

我正在使用 Windows 身份验证并且没有自定义成员资格。但是我确实有一个自定义角色提供程序并将其打开。但是,web.config 中的 <authorization /> 元素呢?我是否也需要对此做些什么?

目前我无法使用 Roles.GetRolesForUser("") 方法(不返回任何内容)但必须像 Roles.Provider.GetRolesForUser("") 那样做?

最大的问题在于站点地图,因为它没有进入 Roles.IsUserInRole 方法。目前我正在为此使用自定义 xmlsitemapprovider,但它并不整洁。

我为 web.config 中的站点地图启用了角色管理器并将 securitytrimmingenabled 设置为 true。

4

1 回答 1

1

是的,您需要在 web.config 中配置您的自定义角色提供程序 - 如下所示:

<roleManager enabled="true" defaultProvider="SqlRoleManager">
  <providers>
    <add name="SqlRoleManager" 
         type="System.Web.Security.SqlRoleProvider"
         connectionStringName="SqlRoleManagerConnection"
         applicationName="MyApplication" />
  </providers>
</roleManager>

您还应该将安全调整设置为 true。例如。

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
    <providers>
      <add name="XmlSiteMapProvider"
        description="Default SiteMap provider."
        type="System.Web.XmlSiteMapProvider "
        siteMapFile="Web.sitemap"
        securityTrimmingEnabled="true" />
    </providers>
  </siteMap>
于 2009-08-01T10:10:43.350 回答