【发布时间】: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