我使用的是Windows身份验证,但没有自定义成员资格。但是,我确实有一个自定义角色提供程序并将其打开。然而,<授权/> web.config中的元素?我也需要做些什么吗?
目前我无法使用Roles.GetRolesForUser(“”)方法(不返回任何内容),但必须像Roles.Provider.GetRolesForUser(“”)那样做?
最大的问题在于站点地图,因为它没有进入Roles.IsUserInRole方法。目前我正在使用自定义xmlsitemapprovider,但它并不整洁。
我启用了rolemanager,并为web.config中的站点地图设置了securitytrimmingenabled为true。
答案 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>