望着核心代碼(UserController.ChangePasswordByToken()),看來該密碼歷史檢驗的密碼驗證之前發生。歷史記錄檢查還會將嘗試的密碼添加到歷史記錄中。因此,如果您的密碼不符合驗證規則,則可能會將其添加到歷史記錄中而不進行更改。
在主機>主機設置>高級設置>成員資格管理中,可以通過取消選中「啓用密碼歷史記錄」來禁用歷史記錄。
但是你需要關注密碼驗證,因爲這似乎是失敗的。它由網絡中的AspNetSqlMembershipProvider的三個屬性組成。配置:
- minRequiredPasswordLength
- minRequiredNonalphanumericCharacters
- passwordStrengthRegularExpression
就像你提到的,passwordStrengthRegularExpression爲空或丟失,這樣不應該關注的問題。確保輸入的密碼符合minRequiredPasswordLength中的最小字符長度幷包含minRequiredNonalphanumericCharacters所需的非字母數字字符數。
下面是一個代碼片段我使用註冊新用戶:
newUser = new UserInfo();
newUser.PortalID = this.PortalId;
newUser.IsSuperUser = false;
newUser.FirstName = txtFirstName.Text;
newUser.LastName = txtLastName.Text;
newUser.DisplayName = txtFirstName.Text + " " + txtLastName.Text;
newUser.Email = txtEmailAddress.Text.Trim();
newUser.Username = txtEmailAddress.Text.Trim();
newUser.LastIPAddress = Request.UserHostAddress;
newUser.Profile.ProfileProperties["CompanyName"].PropertyValue = txtCompanyName.Text;
newUser.Profile.ProfileProperties["AddressLine1"].PropertyValue = txtAddressLine1.Text;
newUser.Profile.ProfileProperties["AddressLine2"].PropertyValue = txtAddressLine2.Text;
newUser.Profile.City = txtCity.Text;
newUser.Profile.ProfileProperties["State"].PropertyValue = ddlState.SelectedValue;
newUser.Profile.PostalCode = wmeZipCode.Text.Trim().TrimEnd('-');
newUser.Profile.Telephone = wmePhoneNumber.Text;
if (lblWmePhoneNumberExtension.Text.Trim().CompareTo(String.Empty) != 0) { newUser.Profile.ProfileProperties["TelephoneExtension"].PropertyValue = wmePhoneNumberExtension.Text; }
var newMembership = new UserMembership(newUser);
newMembership.Approved = true;
newMembership.CreatedDate = DateTime.Now;
newMembership.IsOnLine = false;
newMembership.Password = txtPassword.Text;
newMembership.PasswordQuestion = ddlSecurityQuestion.SelectedValue;
newMembership.PasswordAnswer = txtSecurityQuestionAnswer.Text;
newUser.Membership = newMembership;
UserCreateStatus userStatus = membershipProvider.CreateUser(ref newUser);
感謝您的反饋意見。可悲的是,我仍然無法讓這個工作。我具有以下值的屬性:minRequiredPasswordLength =「8」minRequiredNonalphanumericCharacters =「1」。我正在使用一個我剛剛編制的全新密碼「ChickEnHea%d」,它仍然不起作用:( 您有任何其他想法嗎?唯一想到的可能是我的自定義用戶註冊模塊沒有做它應該爲了使密碼重置工作,我正在使用UserMembership對象來填充帳戶創建密碼 – KPhillipson
您可能需要提供一個登錄提供程序代碼片段,特別是如何設置密碼。看着提供商我建,我用下面的行到的UserInfo對象上設置的密碼: /*設置會員*/ UserMembership oNewMembership =新UserMembership(oUser){密碼=密碼}; /*綁定用戶成員*/ oUser.Membership = oNewMembership; – DotNetNuclear
我將自定義註冊碼添加到原始帖子中。再次感謝你的幫助。 – KPhillipson