How to make WebSecurity.Login to login using username or email?

后端 未结 4 2162
礼貌的吻别
礼貌的吻别 2020-12-13 04:45

WebSecurity.Login in simplemembership take username and password, how to make it to login the user using username or email instead of just username?, to make th

4条回答
  •  清歌不尽
    2020-12-13 05:32

    You can just pull the user with given email from UserProfiles table

     [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginModel model, string returnUrl)
    {
      var login = false;
      if (ModelState.IsValid)
      {
        if (!model.UserName.Contains("@"))
        {
          if (WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
            login = true;
        }
        else
        {
          var targetUser = db.UserProfiles.Where(u => u.Email == model.UserName).FirstOrDefault();
          if (targetUser != null && WebSecurity.Login(targetUser.UserName, model.Password, persistCookie: model.RememberMe))
            login = true;
        }
    
      }
      if (login)
        return Redirect(returnUrl);
      // If we got this far, something failed, redisplay form
      ModelState.AddModelError("", "The user name or password provided is incorrect.");
      return View(model);
    }
    

提交回复
热议问题