ASP.NET Membership контролирует сброс пароля при обратной передаче - PullRequest
1 голос
/ 11 марта 2011

Я написал простое диалоговое окно jQuery, которое будет отображаться на панели asp, если вошедший в систему пользователь не сбросил свой пароль за последние 90 дней. Это прекрасно работает, однако, когда пользователь вводит свой пароль и нажимает «Подтвердить», чтобы вставить новый пароль в базу данных, родительская страница отправляет сообщение обратно до того, как на элементе управления произойдет событие click.

Вот как это настроено:

default.aspx

 <asp:Panel ID="pnlTest" runat="server" Visible="false">
    <div id="dialog" title="Password must be reset">
        <cms:ResetPassword runat="server" ID="reset" />
    </div>
 </asp:Panel>

ResetPassword.ascx:

<div style="overflow:auto; white-space:nowrap;">
    <table class="tableChangePassword">
        <tr>
            <td>Current Password</td>
            <td colspan="2"><asp:TextBox runat="server" ID="txtCurrentPass" TextMode="Password" /></td>
        </tr>
        <tr>
            <td>New Password</td>
            <td><asp:TextBox runat="server" ID="txtNewPass1" TextMode="Password" CssClass="newPass1" /></td>
        </tr>
        <tr>
            <td>Verify New Password</td>
            <td><asp:TextBox runat="server" ID="txtNewPass2" TextMode="Password" CssClass="newPass2" /></td>
        </tr>
        <tr>
            <td colspan="2">
            </td>
        </tr>
        <tr>
            <td colspan="3"><asp:LinkButton runat="server" ID="lbUpdatePass" Text="Submit" onclick="lbUpdatePass_Click" /></td>
        </tr>
    </table>    
    <asp:Label runat="server" ID="lblMSG" />
</div>

СброситьПароль кода:

public partial class ResetPassword : UserControl
{
    protected void lbUpdatePass_Click(object sender, EventArgs e)
    {
        string newPass = txtNewPass1.Text;
        string confirmNewPass = txtNewPass2.Text;
        if (newPass == confirmNewPass)
        {
            MembershipUser user = AuthenticatedUser.GetMembershipProvider().GetUser(AuthenticatedUser.LoginUserID, false);
            if (user != null)
            {
                string resetPsw = user.ResetPassword();
                user.ChangePassword(resetPsw, newPass);
                lblMSG.Text = "Password Changed Successfully";
            }
        }
    }
}

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

1 Ответ

1 голос
/ 12 марта 2011

Я реализовал то, что у вас есть выше, в тестовом проекте, и он работал правильно.Событие lbUpdatePass_Click имело правильные значения в каждом текстовом свойстве текстовых полей.Есть ли у вас код в родительских или дочерних событиях Page_Load, которые вообще манипулируют этими текстовыми полями?Любой другой код, который вы не отображаете выше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...