输入错误的用户名和密码时如何出错

我正在C#ASP.NET MVC5中建立一个项目,当您输入错误的用户名和密码时,我试图给出一个错误。到目前为止,我尝试使用HandleError属性没有任何运气,现在我尝试使用Membership.ValidateUser。

public actionResult Login(User user)
        {
            using (CarsDBEntities db = new CarsDBEntities())
            {
                var usr = db.Users.Single(u => u.Email == user.Email && u.Password == user.Password);
                if (usr != null)
                {
                    Session["UserId"] = usr.UserId.ToString();
                    Session["Email"] = usr.Email.ToString();
                    Session["FirstName"] = usr.FirstName.ToString();
                    Session["LastName"] = usr.LastName.ToString();
                    return RedirectToaction("LoggedIn");
                }
                if (!Membership.ValidateUser(usr.Email,usr.Password))
                {
                    ModelState.AddmodelError(string.Empty,"The user name or password is incorrect");
                    return View(user);
                }
                return View();
            }
        }
lihuaaaa 回答:输入错误的用户名和密码时如何出错

如果序列为空,则

.Single()会引发Exception,如果提供的电子邮件和密码不匹配,则适用于您。来自the docs

  

InvalidOperationException
  没有元素满足谓词中的条件。

     

-或-

     

满足谓词条件的要素不止一个。

     

-或-

     

源序列为空。

如果序列为空,

.SingleOrDefault()将根据您的情况返回空值,使您可以继续进行下一行的空值检查。来自the other docs

  

返回序列中的单个特定元素,如果未找到该元素,则返回默认值。

所以尝试:

var usr = db.Users.SingleOrDefault(u => u.Email == user.Email && u.Password == user.Password);
本文链接:https://www.f2er.com/3114077.html

大家都在问