Asp .Net Password Recovery новый пароль не работает

Я реализую страницу восстановления пароля на сайте, который я разрабатываю, используя образец. Я настроил страницу так, чтобы она отправляла пользователю новый пароль по электронной почте, и это здорово. Пароль хеширован, поэтому я не могу видеть, что находится в базе данных, конечно.

Ну, новый пароль не работает. Ха-ха. Работал над этой проблемой более двух часов, и мне нужно перейти к другому аспекту проекта. У кого-нибудь еще была эта проблема?

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="RecoverPassword.aspx.cs" Inherits="RecoverPassword" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
    <h2>Recover Your Password</h2>
    <p>
        <asp:PasswordRecovery ID="RecoverPwd" runat="server" 
            onsendingmail="RecoverPwd_SendingMail">
            <MailDefinition BodyFileName="~/EmailTemplates/PasswordRecovery.txt" 
                Subject="Your password has been reset...">
            </MailDefinition>
        </asp:PasswordRecovery>
    </p>
</asp:Content>

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class RecoverPassword : System.Web.UI.Page
{
    protected void RecoverPwd_SendingMail(object sender, MailMessageEventArgs e)
    {
        e.Message.CC.Add("[email protected]");
    }
}

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" 
         type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=XXXXXXXXXX" 
         connectionStringName="DefaultConnection" 
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="false" 
         requiresUniqueEmail="true" 
         maxInvalidPasswordAttempts="5" 
         minRequiredPasswordLength="6" 
         minRequiredNonalphanumericCharacters="0" 
         passwordAttemptWindow="10" 
         applicationName="/"/>
  </providers>
</membership>

person user2511441    schedule 24.06.2013    source источник


Ответы (2)


Убедитесь, что формат в базе данных хеширован (1), вы можете найти это в aspnet_Membership и «PasswrodFormat».

Также попробуйте включить этот атрибут в настройки членства, passwordFormat="Hashed".

person bazz    schedule 24.06.2013
comment
Потрясающий. Это было правильно в базе данных. PasswordFormat для hashed — это значение int, равное 1. У меня не было passwordFormat=Hashed в моем web.config. Я только что внес изменения, и это сработало. Спасибо. - person user2511441; 24.06.2013

Возможно, ApplicationName отличается от того, которое использовалось для создания пользователей. Посмотрите таблицы aspnet_Users и aspnet_Application, чтобы проверить.

person Ed W    schedule 24.06.2013
comment
Имя приложения — /, но идентификатор приложения в таблицах пользователя и приложения одинаков. Я надеялся, что это исправление. Отличный звонок, но не думаю, что это все. - person user2511441; 24.06.2013