我设置了一个登录控件,用于我的Web应用程序并遇到问题。我正在尝试使用用户定义的sql数据库验证登录控制,但它显示错误 inavalid列名'密码'。我几乎尝试了所有东西,但它没有用。我不知道我在哪里误会。如果有人可以帮我解决。这是我的代码。
protected void login1_Authenticate(object sender, AuthenticateEventArgs e)
{
SqlConnection mycon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlDataAdapter myadp = new SqlDataAdapter();
myadp.SelectCommand = new SqlCommand();
myadp.SelectCommand.Connection = mycon;
mycon.Open();
myadp.SelectCommand.CommandText = "select *from UserData where username=@uname and password=@pswd";
myadp.SelectCommand.Parameters.AddWithValue("@uname",login1.UserName);
myadp.SelectCommand.Parameters.AddWithValue("@pswd",login1.Password);
SqlDataReader dr;
dr = myadp.SelectCommand.ExecuteReader();
if (dr.Read())
{
e.Authenticated = true;
Session["username"] = login1.UserName;
Response.Redirect("~/Home.aspx");
}
else
{
Response.Write("<Script>alert('Error')</Script>");
}
mycon.Close();
}
答案 0 :(得分:0)
对于您的第一个问题,评论显示您的数据库中没有password
字段
对于第二个问题: - 您正在检查if(dr.Read)
您应该检查if(dr.HasRows)
。你不需要在会话中存储用户名。正如@chinz所说,你可以通过User.Identity.Name
得到它。也在你的web.config
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" name="login" protection="All"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>