Roles.GetRolesForUser和Roles.Provider.GetRolesForUser之间的区别?

时间:2009-08-01 09:54:39

标签: asp.net web-config authorization roleprovider

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

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

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

我启用了rolemanager,并为web.config中的站点地图设置了securitytrimmingenabled为true。

1 个答案:

答案 0 :(得分:1)

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

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

您也应该将security trimming设置为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>