【发布时间】:2012-04-06 07:20:46
【问题描述】:
我有使用 asp.net 成员资格的应用程序。不幸的是,用户密码是使用 PasswordFormat clear 存储的。我想将密码更改为哈希格式而不要求用户再次设置他们的密码。另一个限制是不能更改 Membership 表中的 UserId。有人知道怎么做吗?
【问题讨论】:
标签: asp.net asp.net-membership membership-provider
我有使用 asp.net 成员资格的应用程序。不幸的是,用户密码是使用 PasswordFormat clear 存储的。我想将密码更改为哈希格式而不要求用户再次设置他们的密码。另一个限制是不能更改 Membership 表中的 UserId。有人知道怎么做吗?
【问题讨论】:
标签: asp.net asp.net-membership membership-provider
在您的 web.config 中转到
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider"
type="MyProviders.SqlMembershipProvider"
connectionStringName="MyConnectionString"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"
minRequiredNonalphanumericCharacters="0"
minRequiredPasswordLength="4"
passwordStrengthRegularExpression=""
passwordFormat="Hashed"
enablePasswordReset="true"
enablePasswordRetrieval="false"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true" />
</providers>
</membership>
在这篇MSDN 文章中有一个“密钥生成器”sn-p,运行两次并将它们推送到您的 web.config 中:
<system.web>
<machineKey
validationKey="<blah>"
decryptionKey="<blah>"
validation="SHA1"
decryption="AES"
/>
</system.web>
【讨论】:
您可以通过在 web.config 中配置会员提供程序设置和密钥来加密密码
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlServices"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Hashed"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
passwordStrengthRegularExpression="^([1-zA-Z0-1@.\s]{1,255})$"
applicationName="NitinJS" />
</providers>
</membership>
【讨论】: