Членство в ASP.Net: роли сохранены в другой базе данных - PullRequest
1 голос
/ 18 января 2012

Я учусь тому, как управлять классом Membership.

Я добавил базу данных Membership в базу данных SQL моего веб-сайта, используя aspnet_regsql.exe, и до сих пор могу без проблем перечислять и добавлять пользователей. Однако я решил добавить некоторые роли, используя инструмент конфигурации ASP.Net. Роли были добавлены, но не отображаются в таблице aspnet_Roles моей базы данных SQL.

С тех пор я заметил ASPNETDB.MDF в моей папке VS2010 App_Data для рассматриваемого веб-сайта, и там появляются роли. Пользователи не находятся в этой базе данных, но находятся в базе данных SQL, настроенной в моем файле web.config:

<configuration> 
    <connectionStrings>
        <add name="myConnString" connectionString="Data Source=SQLDB;Initial Catalog=myDatabase;User ID=myUser;Password=myPassword" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <system.web>
        <authentication mode="Forms" />
        <compilation debug="true" targetFramework="4.0">
            <assemblies>
                <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </assemblies>
        </compilation>
        <machineKey validationKey="LOTSOFNUMBERS"
        decryptionKey="MORENUMBERS" validation="SHA1" decryption="AES"/>
        <membership  defaultProvider="SqlProvider">
            <providers>
                <clear/>
                <add name="SqlProvider"
                connectionStringName="myConnString"
                type="System.Web.Security.SqlMembershipProvider"
                applicationName="myApp"
                requiresUniqueEmail="true"
                minRequiredPasswordLength="8"
                minRequiredNonalphanumericCharacters="0"
                requiresQuestionAndAnswer="false"
                passwordFormat="Encrypted"
                enablePasswordRetrieval="true"
                />
            </providers>
        </membership>
        <roleManager enabled="true" />
        <pages theme="myTheme">
        </pages>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</configuration>

Если пользователи могут быть сохранены, изменены и удалены с помощью инструмента конфигурации ASP.Net в моей базе данных, то я бы ожидал, что роли будут делать то же самое? Какой шаг я пропускаю?

Ответы [ 2 ]

5 голосов
/ 18 января 2012

Вам необходимо установить конфигурацию поставщика ролей, например, поставщика членства

<roleManager enabled="true" defaultProvider="TheRoleProvider">
 <providers>
  <clear/>
   <add name="TheRoleProvider" 
        type="System.Web.Security.SqlRoleProvider"
        connectionStringName="myConnString" 
        applicationName="/"/>
 </providers>
</roleManager>
4 голосов
/ 18 января 2012

Вам не хватает рольManager. Вот пример:

<roleManager enabled="true">
    <providers>
        <clear />
        <add connectionStringName="myConnString" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
    </providers>
</roleManager>
...