成员在从不同应用程序创建用户时遇到问

时间:2014-08-21 19:23:38

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

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

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

一切都没有问题,我可以在两个网站上注册和登录,用户可以在自己的应用程序中完美地创建。

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

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

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

任何人都已经遇到过这个问题,或者对于为什么不起作用有任何想法?

1 个答案:

答案 0 :(得分:0)

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

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

而另一个应用程序

<membership defaultProvider="MySQLMembershipProvider">

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