我宁愿让他们输入电子邮件地址并重置密码并将其发送给他们,而不是强制用户记住用户名。
我正在成员(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/