【问题标题】:ASP.Net Membership: Roles saved on Different DatabaseASP.Net Membership:保存在不同数据库中的角色
【发布时间】:2012-01-18 14:25:54
【问题描述】:

我正在学习如何操作 Membership 类。

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

我已经注意到相关网站的 VS2010 App_Data 文件夹中的 ASPNETDB.MDF 并且角色出现在其中。用户不在该数据库中,但在我的 web.config 文件中配置的 SQL DB 中:

<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 配置工具来保存、修改和删除用户,那么我会期望角色也这样做吗?我错过了哪一步?

【问题讨论】:

  • 需要在web.config中配置RoleProvider使用与MembershipProvider相同的数据源。

标签: c# asp.net asp.net-membership


【解决方案1】:

您需要设置角色提供者配置,例如您的会员提供者

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

【讨论】:

    【解决方案2】:

    您缺少角色管理器。这是一个例子:

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

    【讨论】:

    • 谢谢你vucetica。最佳答案!我不只是错过了一步,而是错过了整段楼梯!
    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多