【问题标题】:Set email address as username in ASP.NET Membership provider在 ASP.NET 成员资格提供程序中将电子邮件地址设置为用户名
【发布时间】:2011-07-26 19:19:47
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    这就是我们所做的,所以它可以重复使用,我们可以在 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;
            }
        }
    }
    

    【讨论】:

    • 我正在使用 Web 应用程序,其中我得到了像 DAL/BLL 和 Web 应用程序这样的结构(业务逻辑层数据库访问层和 Web 应用程序的不同层的组合,您继承 sql 提供程序类的方式不是可以这样做...
    • 我们的应用使用相同的东西。这是如果您使用来自 asp.net 的会员资料。如果您不想使用会员资料,则必须编写自己的会员资格提供程序。我们只是使用会员指南来绑定我们的用户。我们有一个注入到 httpcontext 的 SecurityContext 对象来包装该查询以匹配数据,并提供对当前登录用户的轻松访问。如果此答案未涵盖,我不明白您在问题中指的是哪个会员 api。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      只需强制用户名 = 用户电子邮件。

      为此,只需在用户创建表单上放置一个 RegEx 验证器,以仅允许正确的电子邮件作为用户名。

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

      【讨论】:

        猜你喜欢
        • 2010-09-30
        • 2017-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 2012-02-13
        • 2022-01-24
        • 2010-11-15
        相关资源
        最近更新 更多