【问题标题】:Don't allow empty textbox in asp.net mvc 3.1不允许在 asp.net mvc 3.1 中使用空文本框
【发布时间】:2020-09-01 09:19:06
【问题描述】:

我有 2 个 HTML 输入文本框:“电子邮件”和“密码”。每当我提交这些没有值的文本框时,我都会收到以下 SQL 异常: SqlException: The parameterized query '(@email nvarchar(4000),@password nvarchar(4000))SELECT Email,Pas' 需要参数 '@email' ,未提供。

我只想要一条消息,说我需要填写电子邮件和密码。我已经有一个 JS 函数来检查这些文本框的空值并且它可以工作。但之后它仍然会重定向到 SQL Exception 页面。我想我对我的数据库属性做了一些愚蠢的事情。我该如何解决这个问题?

            string sqlquery = "SELECT Email,Password FROM [dbo].[User] WHERE Email = @email and Password = @password;";
            SqlCommand sqlcomm = new SqlCommand(sqlquery, sqlconn);
            sqlcomm.Parameters.AddWithValue("@email", user.Email);
            sqlcomm.Parameters.AddWithValue("@password", user.Password);
            SqlDataReader sdr = sqlcomm.ExecuteReader();
            if (sdr.Read())
            {

                return RedirectToAction("Index", "Home");
            }
            else
            {
                ViewData["Message"] = "Fout";
            }
            sqlconn.Close();



          return View();

登录

<form asp-action="Login" method="post">
    <input  id="loginEmail" type="text" name="Email" asp-for="@Model.Email" />
    <input id="loginWachtwoord" type="password" name="Password" asp-for="@Model.Password" />
    <input type="submit" onclick="CheckNullOrEmpty()" value="Login" />
    <h1>@Html.ViewData["Message"]</h1>

</form>

【问题讨论】:

  • 验证事物的方法有很多。 user.Email 是如何被填满的。
  • @DanielA.White 这些是我为登录系统获得的所有代码。我有一个具有电子邮件和密码属性的模型“用户”。
  • 请不要将用户密码以纯文本形式存储在数据库中;使用散列。 cheatsheetseries.owasp.org/cheatsheets/…

标签: javascript c# sql-server asp.net-mvc asp.net-core


【解决方案1】:

在尝试查询数据库之前检查参数

if(string.IsNullOrEmpty(user.Email) || string.IsNullOrEmpty(user.Password)) {
    ViewData["Message"] = "Fout";
    return View();
}
//... validate first then try to create the statement.

如果您不希望弹出错误页面,您也可以尝试/捕获错误并在 catch 块中返回视图。还有ModelState.IsValid,你可以阅读

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2010-10-25
相关资源
最近更新 更多