我已经询问过类似的问题,但我已经缩小到我的问题,我一直在这个工作了几个小时,无法计算这一点。发送身份验证信息到SQL Server无法正常工作(C#)
基本上,我有一个Visual Studio Wep应用程序,我试图使用登录页面和SQL Server数据库来验证用户凭据。用户进入用于登录画面上的用户名和密码的字符串,其被送到这里对后面的代码:
private bool ValidateUser(string userName, string passWord)
{
SqlConnection conn;
SqlCommand cmd;
string lookupPassword = null;
// Consult with your SQL Server administrator for an appropriate connection
// string to use to connect to your local SQL Server.
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["databaseConnect"].ConnectionString);
conn.Open();
// Create SqlCommand to select pwd field from users table given supplied userName.
cmd = new SqlCommand("Select Password from Users where [email protected];", conn);
cmd.Parameters.Add("@userName", System.Data.SqlDbType.VarChar, 25);
cmd.Parameters["@userName"].Value = userName;
lookupPassword = (string)cmd.ExecuteScalar();
// If no password found, return false.
if (null == lookupPassword)
{
return false;
}
private void cmdLogin_ServerClick(object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Value,txtUserPass.Value))
(logs in)
}
该应用程序在数据库中,目前持有一个测试项目连接的表,如所示这里:http://i.imgur.com/YFOQYKm.jpg
但是,当我输入“test”作为用户名和“password”作为密码时,它不接受登录。
我试图只包括我的代码的相关部分,使之成为任何人试图回答这个问题更加清晰,但这里是我的问题谈几点看法:
- 当我设置如果(空== lookupPassword )为“返回true”而不是“返回false”,应用程序允许登录。 这意味着lookupPassword在“lookupPassword =(string)cmd.ExecuteScalar();”之后仍然为空
- 如果将if(ValidateUser(txtUserName.Value,txtUserPass.Value))更改为if(userName = test和passWord = password),则应用程序正常工作。所以问题不在于登录到应用程序的实际行为,而仅仅是找不到SQL Server凭据为真。
- “databaseConnect”在应用程序的其他地方工作,所以这不是问题。
- 当我提交登录凭证时,应用程序没有中断,它根本没有接受它们是正确的。
都会响起的是,这个问题是来自这几行字在我看来:
cmd = new SqlCommand("Select Password from Users where [email protected];", conn);
cmd.Parameters.Add("@userName", System.Data.SqlDbType.VarChar, 25);
cmd.Parameters["@userName"].Value = userName;
lookupPassword = (string)cmd.ExecuteScalar();
是否有人看到这个问题可能是我吗?我对编程非常陌生,请尽量保持答案尽可能简单。预先感谢您的任何帮助。 :)
ExecuteScalar调用后'lookupPassword'的值是多少? – Richard 2014-09-04 12:50:29
从您所说的话来看,您似乎在访问用户输入数据方面存在问题。什么类型的对象是txtUsername/txtPassword? – alexc95 2014-09-04 12:51:20
PS。您似乎在存储明文密码,请考虑如果(由于其他漏洞)有人访问数据库会发生什么情况? (它已经做了很多次了,你*不*不同)。 – Richard 2014-09-04 12:51:41