我刚刚创建了一个新的Web服务器(Windows 2012),并试图登录到我们的网站(从旧的web服务器文件的直接副本)。从旧的web服务器上看,一切都很正常。当尝试从新服务器登录时,我的密码将被拒绝。我知道请求正在传递到DB服务器,因为我可以通过数据库服务器上的server看到它们。
旧的设置在同一服务器上有网站和数据库,新设置只是将网站移动到一个专用服务器上。数据库保持不变。
我唯一能想到的是,密码是使用旧服务器的机器密钥进行散列/加密的,尽管我们确实在web.config中指定了一个机器密钥,所以这不应该是一个问题。
<!-- Key information as using encrypted passwords -->
<machineKey validationKey="xxx,IsolateApps" decryptionKey="xxx,IsolateApps" validation="3DES"/>
<!-- Membership, Role & Personalisation Providers -->
<membership>
<providers>
<remove name="AspNetSqlMembershipProvider"/>
<add name="AspNetSqlMembershipProvider" connectionStringName="SqlAspNetDB"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false"
applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear"
maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0"/>
</providers>
</membership>发布于 2014-11-22 11:43:27
假设两个服务器上的machineKey配置完全相同.我看到你在使用IsolateApps。
在MSDN中:“IsolateApps修饰符使ASP.NET使用应用程序的应用程序ID为服务器上的每个应用程序生成一个唯一的键”。
http://msdn.microsoft.com/en-us/library/ff649308.aspx
上面链接中的Web场场部署注意事项部分展示了应该如何完成machineKey配置。
我以前从未经历过这样的事情,所以不要完全相信接下来的几行.除非您可以以某种方式使新应用程序具有相同的应用程序标识,否则这些密码现在只能由原始应用程序解密。我想你在这里有两个选择:
警告:可能不需要这样说,但是在应用于所有用户帐户记录之前,先用一个用户帐户进行测试。:-)
发布于 2014-11-20 12:44:49
是的,可能是密码问题。我的直觉是..。
在数据库中,执行:
SELECT PasswordFormat FROM aspnet_Membership WHERE UserId = {YourUserId}。
如果返回的值是而不是 0,那么这很可能是问题所在。配置设置中的passwordFormat必须与数据库中记录的密码格式匹配。PasswordFormat=“哈希”是最受欢迎的选择。(即从数据库的角度来看,PasswordFormat =1)。
因此,如果数据库中的"1“是”1“,则将配置设置为passwordFormat=”哈希德“。
其他选项有:“加密”(2)
https://stackoverflow.com/questions/27039014
复制相似问题