我有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);
这确实可以毫无问题地创建用户,但如果我尝试从网站应用程序登录,则会返回密码错误。我做了测试,这确实是一个密码错误。 (如果我从网站上创建的其他用户复制另一个哈希/盐,我可以使用这个新创建的用户登录,因此用户创建正常,但由于某种原因,从管理应用程序创建用户时无法识别密码)
任何人都已经遇到过这个问题,或者对于为什么不起作用有任何想法?
答案 0 :(得分:0)
问题是在一个配置上我有这个:
<membership defaultProvider="MySQLMembershipProvider" hashAlgorithmType="SHA1">
而另一个应用程序
<membership defaultProvider="MySQLMembershipProvider">
添加hashAlgorithType
解决了这个问题。应用程序名称 CAN 可在运行时更改。