加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – .Net会员提供商没有捕获电子邮件重复

发布时间:2020-12-16 10:02:18 所属栏目:asp.Net 来源:网络整理
导读:我是.Net / MVC3的新手,我正在开发一个使用默认成员资格提供程序的C#,MVC3,EF4应用程序.从我的阅读,它应该自动捕获重复的电子邮件,但它似乎没有这样做,我不知道为什么.我真正需要弄清楚的是在哪里查看是否有正确的部分,以及为什么它可能不进行验证检查(它似
我是.Net / MVC3的新手,我正在开发一个使用默认成员资格提供程序的C#,MVC3,EF4应用程序.从我的阅读,它应该自动捕获重复的电子邮件,但它似乎没有这样做,我不知道为什么.我真正需要弄清楚的是在哪里查看是否有正确的部分,以及为什么它可能不进行验证检查(它似乎做了大多数/所有其他的,如重复用户名或无效的密码格式等,只有重复的电子邮件没有被捕获.)

自定义包括向特定角色添加新用户,以及重定向到“第一次”欢迎页面.

这是代码:

// POST: /Account/Register

    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;
            Membership.CreateUser(model.UserName,model.Password,model.Email,null,true,out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuthentication.SetAuthCookie(model.UserName,false /* createPersistentCookie */);
                Roles.AddUserToRole(model.UserName,"Registered");
                //return RedirectToAction("Index","Home");
                return RedirectToAction("Acceptance","Account");
            }
            else
            {
                ModelState.AddModelError("",ErrorCodeToString(createStatus));
            }
        }

        // If we got this far,something failed,redisplay form
        return View(model);
    }

以下是(未经修改的)验证方法:

#region Status Codes
    private static string ErrorCodeToString(MembershipCreateStatus createStatus)
    {
        // See http://go.microsoft.com/fwlink/?LinkID=177550 for
        // a full list of status codes.
        switch (createStatus)
        {
            case MembershipCreateStatus.DuplicateUserName:
                return "User name already exists. Please enter a different user name.";

            case MembershipCreateStatus.DuplicateEmail:
                return "A user name for that e-mail address already exists. Please enter a different e-mail address.";

等等

解决方法

默认情况下,只有用户名必须是唯一的.如果您还想要唯一的电子邮件地址,则必须在MembershipProvider的Web.config条目中进行设置.

就像是

<membership>
  <providers>
    <add name="AspNetSqlMembershipProvider" [...] requiresUniqueEmail="true" [...] />
  </providers>
</membership>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读