我正在使用ASP.NET成员身份,因为这不是具有此类身份验证的典型网站。我有管理员指定Uname和密码(加密)的表。
单击“登录”按钮后,我有一个LogIn页面,我需要在数据库表中搜索用户。
public void getuserinfo()
{
String var = System.Configuration.ConfigurationManager
.ConnectionStrings["KKSTechConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(var);
SqlCommand myCmd = new SqlCommand("SELECT Username, Pass FROM Users", conn);
conn.Open();
if(TextBox1== Username) && (TextBox2== Password) <- I am not able to get this right :(
{
//How do I get his info??
}
}
*Database table for dbo.users:*
Uname(PK) | Pass | EmpID (FK)
我想首先解密密码,然后将其与TextBoxPassword进行比较..
请帮忙。
答案 0 :(得分:2)
另一种方法是对用户界面输入的密码进行哈希处理,并将其与存储在数据库中的哈希密码进行比较。
现在,使用你的功能。
public void ValidateUser()
{
var connectionString = System.Configuration.ConfigurationManager
.ConnectionStrings["KKSTechConnectionString"].ConnectionString;
var userName = txtUserName.Text;
var hashedPassword = Helper.ComputeHash(txtPassword.Text, "SHA512", null);
// this query should be parameterised when used in production to avoid SQL injection attacks
var query = String.Format("SELECT Username, Pass FROM Users WHERE Username='{0}' AND Pass='{1}'",
userName,
hashedPassword);
using(var connection = new SqlConnection( connectionString ))
using(var command = new SqlCommand(query, connection ))
{
conn.Open();
SqlDataReader reader=command.ExecuteReader();
if(reader.Read())
{
}
reader.Close();
}
}
答案 1 :(得分:0)
在我们解决问题之前几乎没有问题:
在您的代码中,我可以注意到以下问题:
在匹配用户名和密码之前,请务必注意加密/解密。