我想在会员资格api中使用电子邮件地址作为用户名,而不是接受用户名。 我希望用户可以使用电子邮件地址注册到我的网站,他可以使用电子邮件ID和密码登录,而不是用户名和密码。
答案 0 :(得分:7)
这就是我们所做的,所以它是可重用的,我们可以在web.config中注册它。如果你考虑一下,这就是重要的。只要您的验证和前端向最终用户表明他们的用户名应该是电子邮件,并且您进行了正确的验证......从那里,正常的呼叫任何会员提供商都会支持您。快捷方式版本的新方法,以及隐藏/修改我们的外观背后的原始方法。
public class EmailAsUsernameMembershipProvider : SqlMembershipProvider
{
public MembershipUser CreateUser(string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
return base.CreateUser(email, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
}
private new MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
return base.CreateUser(email, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
}
public override bool RequiresUniqueEmail
{
get
{
return true;
}
}
}
答案 1 :(得分:5)
这一切都已经如此线程所描述的那样可能,但有一件事需要注意:在数据库中,用户名是50个字符(表用户),而电子邮件(表成员资格)是256个字符长。实际上这意味着更短的电子邮件地址:)
答案 2 :(得分:4)
只需强制用户名=用户电子邮件。
要做到这一点,只需在用户创建表单上放置一个RegEx验证器,只允许使用正确的电子邮件作为用户名。
根据用户的电子邮件重命名已存在的用户名。