我想在嘗試重置密碼時更新單個用戶的密碼。手動密碼更新以明文形式存儲新密碼而不是哈希
而不是使用Membership.Provider.ResetPassword函數,我想要更多的控制正在生成的密碼。 生成的密碼只能包含大小寫字母和數字。
所以,我想:
的web.config
<providers>
<clear />
<add name="MyMembershipProvider"
type="Sample.MyMembershipProvider"
connectionStringName="conn1"
requiresQuestionAndAnswer="false"
applicationName="/wedding"
minRequiredPasswordLength="6"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresUniqueEmail="true"
minRequiredNonalphanumericCharacters="0" passwordFormat="Hashed" />
</providers>
resetpassword.aspx.vb
Dim newpassword As String = GlobalFunctions.CreateNewPassword(8)'this generated the password in the format I want
Dim myConnection As SqlConnection = GetConnection()
Dim cmd As New SqlCommand("SELECT au.username, aa.ApplicationName, password, passwordformat, passwordsalt " & _
"FROM aspnet_membership am " & _
"INNER JOIN aspnet_users au " & _
"ON (au.userid = am.userid) " & _
"INNER JOIN aspnet_applications aa " & _
"ON (au.applicationId = aa.applicationid) " & _
"WHERE [email protected]", myConnection)
cmd.Parameters.Add(New SqlParameter("@email", Email))
然後用它來更新使用標準的ASP的密碼。 NET存儲過程:
除此之外,新密碼甚至沒有工作(可能是因爲我在我的membershiprovider中的密碼格式「哈希」在web.config中),密碼也以明文形式存儲,我不想。
那麼,如何更新用戶密碼並存儲密碼散列?
爲什麼不直接用自己的實現覆蓋GeneratePassword而不是完全繞過Membership API? (即http://www.codeovereasy.com/2012/03/override-asp-net-membership-password-generation-rules/) –