2012-01-18 62 views
1

我正在学习如何操作成员类。ASP.Net成员:角色保存在不同的数据库

我已经使用aspnet_regsql.exe将Membership数据库添加到了我的网站的SQL数据库,到目前为止,我可以列出并添加用户而没有问题。但是,我决定使用ASP.Net配置工具添加一些角色。角色已添加,但未显示在我的SQL数据库的aspnet_Roles表中。

我已经注意到我的VS2010 App_Data文件夹中的ASPNETDB.MDF为有问题的网站和角色出现在那里。该用户不在该数据库,但在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配置工具删除,那么我会期待角色也这样做?我错过了什么步骤?

+0

您需要在web.config中配置RoleProvider以使用与MembershipProvider相同的数据源。 – 2012-01-18 14:28:25

回答

4

你缺少roleManager。以下是一个示例:

<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> 
+0

谢谢vucetica。最佳答案!我不只错过了一步,而是一整段楼梯! – ComfortablyNumb 2012-01-18 14:46:47

5

您需要设置角色提供的配置,喜欢你的成员资格提供

<roleManager enabled="true" defaultProvider="TheRoleProvider"> 
<providers> 
    <clear/> 
    <add name="TheRoleProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="myConnString" 
     applicationName="/"/> 
</providers> 
</roleManager> 
相关问题