我创建了一个成员(member)服务提供商并将我的 web.config 更改为
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider"
type="Khafan.Providers.SqlMembershipProvider"
connectionStringName="KhafanConnectionString"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"
minRequiredNonalphanumericCharacters="0"
minRequiredPasswordLength="4"
passwordStrengthRegularExpression=""
passwordFormat="Hashed"
enablePasswordReset="true"
enablePasswordRetrieval="false"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true" />
</providers>
</membership>
但是现在,每当我尝试浏览到 ASP.Net 配置的安全页面时,都会出现以下错误:
自动生成的 key 不支持散列或加密的密码
在我的数据库中,我为我的 PK 使用了 Identity。我不知道这是不是问题。但如果是,我该如何解决?我不想更改身份值。
谢谢。
最佳答案
这是因为您正在散列密码,但尚未在 web.config 中设置特定键。此 MSDN article 中有一个“ key 生成器”片段, 运行两次并将它们推送到您的 web.config 中:
<system.web>
<machineKey
validationKey="<blah>"
decryptionKey="<blah>"
validation="SHA1"
decryption="AES"
/>
这应该让你解决问题。就像这样,否则你可以将你的成员(member)数据库/应用程序带到另一台机器上,你的密码都不起作用,因为自动生成的机器 key 会不同:-)
关于asp.net-membership - 自动生成的 key 不支持散列或加密的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/546861/