asp.net - 使用电子邮件而不是用户名恢复密码

标签 asp.net email asp.net-membership passwords

我宁愿让他们输入电子邮件地址并重置密码并将其发送给他们,而不是强制用户记住用户名。

我正在成员(member)资格提供程序下使用 ASP .Net PasswordRecovery 控件。

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

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

那么,我如何轻松更改我的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); } 

在关联的 .cs 文件中,但控件无法编译并出现错误

CS0123: No overload for 'PasswordRecovery1_VerifyingUser' matches delegate 'System.Web.UI.WebControls.LoginCancelEventHandler'

我不明白

最佳答案

您可以实现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;
    }
}

关于asp.net - 使用电子邮件而不是用户名恢复密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966587/

相关文章:

asp.net - REST 和 Web 服务之间的区别

php - 由于 google 的图片代理,Gmail 中的图片链接中断

email - Jenkins java.lang.NoSuchMethodError : No such DSL method 'post' found among steps

asp.net - 用户登录网站时的 T-SQL AES 加密与哈希/加盐

asp.net - 根据角色重定向到其他页面

c# - 在屏幕上画线?

javascript - 格式化数据以填充谷歌图表

c# - ASP.NET 中的按键

php - 使用PHP的邮件功能时如何在收件人姓名中使用特殊字符

asp.net-mvc - 如何在受密码保护的 asp.net-mvc 站点上自动调用 url