我使用的是Windows身份验证,没有自定义成员资格。但是,我确实有一个自定义的角色提供程序,并将其打开。但是,web.config中的< authorization />元素又如何呢?我也需要用它做点什么吗?
现在我不能使用Roles.GetRolesForUser("")方法(不返回任何东西),但必须像Roles.Provider.GetRolesForUser("")那样做?
最大的问题是站点地图,因为它没有进入Roles.IsUserInRole方法。目前,我使用了一个自定义的xmlsitemapprovider来实现这一点,但它并不简洁。
我启用了角色管理器,并在web.config中将站点地图的securitytrimmingenabled设置为true。
发布于 2009-08-01 10:10:43
是的,您需要在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>https://stackoverflow.com/questions/1216270
复制相似问题