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

use*_*565 4 .net asp.net asp.net-membership

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

Cha*_*ert 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


lna*_*aie 5

这一切都是可能的,如本线程所述,但有一点需要注意:在数据库中,用户名是50个字符(表用户),而电子邮件(表成员资格)是256个字符长.实际上这意味着更短的电子邮件地址 :)