代码之家  ›  专栏  ›  技术社区  ›  Degan

使用电子邮件而不是用户名恢复密码

  •  2
  • Degan  · 技术社区  · 17 年前

    现在系统工作正常,它重置密码并发送给用户。然而,我发现许多用户忘记了他们的用户名。显然,我在给他们的电子邮件中包含了用户名。

    理想情况下,我会完全不用用户名,但不幸的是,我已经有了用户名不是电子邮件地址的用户。

    那么,如何轻松地更改PasswordRecovery控件以请求用户的电子邮件地址并将重置密码和用户名发送到该地址?

    UserNameLabelText="Email:" OnVerifyingUser="PasswordRecovery1_VerifyingUser"
    

    到asp:PasswordRecovery,以及

    protected void PasswordRecovery1_VerifyingUser(
        object sender
      , MailMessageEventArgs e)
    { PasswordRecovery1.UserName = 
    System.Web.Security.Membership.GetUserNameByEmai(PasswordRecovery1.UserName); } 
    

    CS0123:“PasswordRecovery1\u VerifyingUser”匹配没有重载 代表“System.Web.UI.WebControls.LoginCancelEventHandler”

    我不明白

    2 回复  |  直到 8 年前
        1
  •  2
  •   denver    12 年前

    您可以实现PasswordRecovery.VerifyingUser事件的处理程序,以允许用户提供用户名或密码。

    protected void PasswordRecovery1_VerifyingUser(object sender, LoginCancelEventArgs e)
    {
        PasswordRecovery passRecovery = (PasswordRecovery)sender;
    
        if (Membership.FindUsersByName(passRecovery.UserName).Count == 0)
        {
            // There is no matching user name.  Check to see if a known email address
            // was entered.  If so use the user name corresponding to the email address.
            string user = Membership.GetUserNameByEmail(passRecovery.UserName);
            if (user != null)
                passRecovery.UserName = user;
        }
    }
    
        2
  •  1
  •   user1921 user1921    17 年前

    因此,如果用户不知道他们的用户名,他们会提供他们的电子邮件,您可以使用FindUsersByEmail或GetUsernameByEmail。

    如果他们不知道他们的电子邮件地址,他们提供他们的用户名,你使用FindUserByName。

    正如凯德所指出的,你的问题在你的帖子中并不明显。

    推荐文章