Разница между Roles.GetRolesForUser и Roles.Provider.GetRolesForUser? - PullRequest
1 голос
/ 01 августа 2009

Я использую аутентификацию Windows и у меня нет пользовательского членства. Однако у меня есть собственный поставщик ролей, и я включил его. Однако как насчет элемента в web.config? Нужно ли что-то с этим делать?

В настоящее время я не могу использовать метод Roles.GetRolesForUser ("") (ничего не возвращает), но должен сделать это как Roles.Provider.GetRolesForUser ("")?

Самая большая проблема связана с картами сайта, поскольку они не попадают в метод Roles.IsUserInRole. На данный момент я использую пользовательский xmlsitemapprovider для этого, но он не аккуратный.

Я включил менеджер ролей и установил для securitytrimmingenabled значение true для карты сайта в файле web.config.

1 Ответ

1 голос
/ 01 августа 2009

Да, вам нужно настроить свой собственный поставщик ролей в 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...