2013-06-24 4 views
0

Я реализую страницу восстановления пароля на сайте, который я разрабатываю, используя образец. Я настроил страницу, чтобы она отправила электронное письмо пользователю с новым паролем, и это здорово. Пароль хэширован, поэтому я не вижу, что есть в базе данных, конечно.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> 

ответ

0

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

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

+0

Удивительный. Это было правильно в базе данных PasswordFormat для хэша - это значение int 1. У меня не было пароляFormat = «Hashed» в моем web.config. Я только что внес изменения, и это сработало. Спасибо. – user2511441

0

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

+0

Имя приложения «/», но идентификатор приложения является одинаковым в таблицах пользователей и приложений. Я надеялся, что это исправить. Большой призыв, но не думайте, что это так. – user2511441

Смежные вопросы