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

4

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

我应该如何修改登录、注册用户、忘记密码控件以支持这一点?

2个回答

5
这是完全可行的。一种方法是修改CreateUserWizard模板,移除默认的Email文本框并将EmailRequired设置为false。然后,将用户名标签更改为电子邮件。如果您使用CreateUserWizard控件,则必须保留文本框ID为UserName,否则将引发错误。然后,您可以像平常一样访问“用户名”,因为用户的电子邮件地址将存储在用户名列中。
如果您想要的话,也可以通过处理CreatedUser事件来填充电子邮件列。例如,您可以像这样做:
MembershipUser currentUser = Membership.GetUser();
currentUser.Email = currentUser.UserName;
Membership.UpdateUser(currentUser);

这样一来,当您想使用会员方法时,电子邮件栏也会填写。主要缺点是Membership API不允许您更改用户名。因此,如果用户更改了其电子邮件地址,其用户名将保持为旧电子邮件地址。为了解决这个问题,您需要跳过Membership API并直接进入SQL代码。您可以在这里找到如何做。


0

我喜欢使用我的电子邮件地址作为登录名。这通常非常有效,因为我不必记住特定网站的登录名,而且没有人应该使用我的电子邮件地址。

但是...除了Tenaciouslmpy的答案之外,另一个缺点是您必须小心暴露这些“用户名”。您最终会创建一个名为“显示名称”的字段。这完全没问题,但请注意,这样做在长期内不会为您节省任何工作。


1
透露这些用户名,是指在网页上显示电子邮件地址,这应该出于安全考虑而避免吗? - DotnetDude
1
是的,没错。没有人希望他们的电子邮件地址被公开,以便垃圾邮件发送者可以收集它。 - Bryan
保持用户名“秘密”等方面的观点很好,但我也考虑为我的一些网站做这个,因为我大部分的管理时间都花在帮助人们再次记住他们的用户名上,使用电子邮件地址将极大地减轻这种负担!! - Paul Kohler
@Paul - 默认情况下,Membership API 不需要“注册确认”。我计划通过向用户发送电子邮件并要求其在激活帐户之前单击确认链接来实现此功能。您的经验是管理员为具有此额外步骤的用户提供技术支持所花费的时间量是多少? - DotnetDude
1
这主要是我要留意谁加入了,这样可以防止垃圾邮件发送者!我发现授权电子邮件很好,但在我有 iPhone 之前,有时我没有当天处理它的机会。这取决于您的网站要求等等。如果我再次这样做,我会在电子邮件中提供所有所需信息,并提供一个是和一个否的链接,以便立即完成。话虽如此 - 如果您每天期望数百个请求,您可能会有点忙!!;-) - Paul Kohler
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接