默认情况下,Membership API使用单独的用户名字段来登录用户。我想使用电子邮件地址供用户登录。这是个好主意吗?
如何修改登录,注册用户,忘记密码控制以支持此功能?
答案 0 :(得分:5)
这当然可以做到这一点。一种方法是更改CreateUserWizard模板并删除默认的电子邮件文本框并将EmailRequired设置为false。然后,将用户名标签更改为电子邮件。如果使用CreateUserWizard控件,则必须将文本框ID保留为UserName,否则将引发错误。然后,您可以像往常一样访问“用户名”,因为用户的电子邮件地址将存储在用户名列中。
如果需要,您还可以通过处理CreatedUser
事件将电子邮件列填充用户名。例如,你可以这样做:
MembershipUser currentUser = Membership.GetUser();
currentUser.Email = currentUser.UserName;
Membership.UpdateUser(currentUser);
这样,当您要使用成员资格方法时,也会填写电子邮件列。 主要缺点是Membership API不允许您更改用户名。因此,如果用户更改了其电子邮件地址,则其用户名将保留为旧电子邮件地址。为了解决这个问题,您必须跳过Membership API并直接转到SQL代码。您可以了解如何执行此操作here
答案 1 :(得分:0)
我喜欢使用我的电子邮件地址登录名称。它通常运行良好,因为我不必记住特定站点的登录,并且没有其他人应该使用我的电子邮件地址。
但是......除了Tenaciouslmpy的答案之外,另一方面是你必须小心暴露这些“用户名”。你最终要做的是创建一个名为“显示名称”的字段。这完全没问题,但请注意,从长远来看,这不会为你节省任何工作。