我宁愿让用户输入他们的电子邮件地址并重置密码并发送给他们,而不是强迫用户记住用户名。
我在会员提供商下使用ASP .Net PasswordRecovery控件。
现在系统工作正常,它会重置密码并发送给用户。但是,我发现许多用户忘记了他们的UserName。显然,我在电子邮件中包含了UserName。
理想情况下,我会完全免除用户名,但遗憾的是我已经拥有不是电子邮件地址的UserNames用户。
那么,如何轻松更改我的PasswordRecovery控件以询问用户的电子邮件地址并将重置密码和UserName发送到该地址?
我尝试添加
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:'PasswordRecovery1_VerifyingUser'匹配没有重载 委托'System.Web.UI.WebControls.LoginCancelEventHandler'
我不明白
答案 0 :(得分:2)
您可以实现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;
}
}
答案 1 :(得分:1)
因此,如果用户不知道他们的用户名,他们会提供他们的电子邮件,您使用FindUsersByEmail或GetUsernameByEmail。
如果他们不知道自己的电子邮件地址,则会提供用户名,并使用FindUsersByName。
正如凯德指出的那样 - 你的问题在你的帖子中并不是很明显。