【问题标题】:Membership having problems creating users from different application会员从不同的应用程序创建用户时遇到问题
【发布时间】:2014-08-21 19:23:37
【问题描述】:

我有 2 个这样的应用程序 (MVC):

网站

管理

在他们每个人中,我都像这样使用 asp.net 会员提供程序(使用 mysql):

网站 web.config

<roleManager enabled="true" defaultProvider="MySQLRoleProvider">
            <providers>
                <clear />
                <add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="mySqlConnectionString" applicationName="Website" />
            </providers>
        </roleManager>
        <membership defaultProvider="MySQLMembershipProvider" hashAlgorithmType="SHA1">
            <providers>
                <clear />
                <add name="MySQLMembershipProvider" autogenerateschema="false" 
              type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" 
              connectionStringName="mySqlConnectionString" 
              enablePasswordRetrieval="false" 
              enablePasswordReset="true" 
              requiresQuestionAndAnswer="false" 
              applicationName="Website" 
              requiresUniqueEmail="true" 
              passwordFormat="Hashed" 
              maxInvalidPasswordAttempts="25" 
              minRequiredPasswordLength="6" 
              minRequiredNonalphanumericCharacters="0" 
              passwordAttemptWindow="10" 
              passwordStrengthRegularExpression="" />
            </providers>
        </membership>

管理 web.config

  <roleManager enabled="true" defaultProvider="MySQLRoleProvider">
    <providers>
      <clear />
      <add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="mySqlConnectionString" applicationName="Administration" />
    </providers>
  </roleManager>
  <membership defaultProvider="MySQLMembershipProvider" hashAlgorithmType="SHA1">
    <providers>
      <clear />
      <add name="MySQLMembershipProvider" autogenerateschema="true" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="mySqlConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="Glocalapps" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
    </providers>
  </membership>
  <profile defaultProvider="MySqlProfileProvider">
    <providers>
      <clear />
      <add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="mySqlConnectionString" applicationName="Administration" />
    </providers>
  </profile>

两者都使用相同的连接字符串。

一切正常,我可以在两个网站上注册和登录,并且用户是在它自己的应用程序中完美创建的。

我正在尝试从管理 Web 应用程序为网站应用程序实现一个创建用户,如下所示:

Membership.ApplicationName = "Website";
var membership = Membership.CreateUser(username, password);

这确实可以毫无问题地创建用户,但是如果我尝试从网站应用程序登录,它会返回密码错误。我做了测试,这确实是一个密码错误。 (如果我从网站上创建的其他用户复制另一个哈希/盐,然后我可以使用这个新创建的用户登录,因此用户创建正常,但由于某种原因,从管理应用程序创建用户时无法识别密码)

有人已经遇到过这个问题,或者知道为什么不工作吗?

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-membership


    【解决方案1】:

    问题是在一个配置上我有这个:

    <membership defaultProvider="MySQLMembershipProvider" hashAlgorithmType="SHA1">
    

    而其他应用程序

    <membership defaultProvider="MySQLMembershipProvider">
    

    添加hashAlgorithType 解决了这个问题。应用程序名称可以在运行时更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多