使用电子邮件地址登录 - 会员资格API

Dot*_*ude 4 c# asp.net asp.net-membership

默认情况下,Membership API使用单独的用户名字段来登录用户.我想使用电子邮件地址供用户登录.这是一个好主意吗?

如何修改登录,注册用户,忘记密码控制以支持此功能?

key*_*rdP 5

这当然可以做到这一点.一种方法是更改​​CreateUserWizard模板并删除默认的电子邮件文本框并将EmailRequired设置为false.然后,将用户名标签更改为电子邮件.如果使用CreateUserWizard控件,则必须将文本框ID保留为UserName,否则将引发错误.然后,您可以像往常一样访问"用户名",因为用户的电子邮件地址将存储在用户名列中.

如果需要,您还可以通过处理CreatedUser事件让电子邮件列填充用户名.例如,你可以这样做:

MembershipUser currentUser = Membership.GetUser();
currentUser.Email = currentUser.UserName;
Membership.UpdateUser(currentUser);
Run Code Online (Sandbox Code Playgroud)

这样,当您要使用成员资格方法时,也会填写电子邮件列.主要缺点是Membership API不允许您更改用户名.因此,如果用户更改了其电子邮件地址,则其用户名将保留为旧电子邮件地址.为了解决这个问题,您必须跳过Membership API并直接转到SQL代码.你可以在这里找到如何做到这一点