在ASP.NET Membership provider中将电子邮件地址设置为用户名

时间:2011-03-31 10:58:26

标签: .net asp.net asp.net-membership

我想在会员资格api中使用电子邮件地址作为用户名,而不是接受用户名。  我希望用户可以使用电子邮件地址注册到我的网站,他可以使用电子邮件ID和密码登录,而不是用户名和密码。

3 个答案:

答案 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验证器,只允许使用正确的电子邮件作为用户名。

根据用户的电子邮件重命名已存在的用户名。