我有一个工作的asp.net 4会员wesite大约5个月,今天我改变了正则表达式以放松密码限制。我仍然可以创建和访问新帐户,但无法再访问以前注册过的任何帐户。
我检查了数据库并确认它们仍然存在。我最初的想法是密码错误。我检查了两个我知道密码的帐户,两个帐户都无法访问。我试图使用密码恢复选项,但是当我输入用户名时,我被告知用户不存在。
当我检查数据库并查阅成员资格和配置文件表时,旧用户和新用户,前后正则表达式更改都在同一个表中。这导致我最后的发现和我没有经验的发现。是否有新的机器密钥正在创建新用户但无法解密旧用户,从而使它们不可用?如果是这样,我该如何解决这个问题?
答案 0 :(得分:1)
与您的评论一样,我首先想到的是应用密钥已被更改。此密钥存储在web.config / system.web / membership:
中<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider"
...
applicationName="YOUR_KEY_HERE" />
</providers>
</membership>
此密钥允许具有相同成员资格提供程序的不同应用程序(例如您的System.Web.Security.SqlMembershipProvider
)使用相同的数据库来存储成员资格数据。
一个提供商不会看到来自其他提供商的用户,反之亦然,因为他们在查询数据库时会考虑应用程序名称。但是当您查看Users表时,您可能不会立即注意到该关系,因为SqlMembershipProvider
在Users表中使用了Guid。但它是Applications表的外键,您可以在其中找到应用程序名称。
答案 1 :(得分:0)
我的问题略有不同*但我在web.config中指定了自己的机器密钥。详情请见http://msdn.microsoft.com/en-us/library/ff649308.aspx
(*我的应用程序在大型虚拟化服务器场中从服务器迁移到服务器,因此每次更改机器密钥导致应用程序无法读取先前设置的cookie。)