asp.net 如何在c#中验证网站的密码和用户名

new9mtju  于 2022-12-15  发布在  .NET
关注(0)|答案(5)|浏览(166)

我有一个简单的登录网站,这是我在Visual Studio 2015中的第一个网站项目。我成功地创建了一个SQL数据库,其中包含用户名,密码,电子邮件和国家等用户信息,我也成功地创建了一个用户注册页面,新用户可以输入那里的细节,这些细节将被添加到数据库。这一切都很好。
但是我遇到了一个障碍,当我试图根据SQL数据库中包含用户数据的行中的存储值来验证用户名和密码,以给予用户访问仅限成员的页面时。
这是我的代码片段,当用户单击登录按钮。

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MembersConnectionString"].ConnectionString);
        con.Open();
        string checkUser = "SELECT * FROM Members where Username= '" + TextBoxSignUser.Text + "' and Password= '" + TextBoxSignPass.Text + "'";
        SqlCommand cmd = new SqlCommand(checkUser, con);
        cmd.ExecuteNonQuery();
        con.Close();

我知道我需要做的可能是类似下面这个伪代码的事情,但是我不确定如何根据数据库中存储的值来验证这个信息。

if ("Username" and "Password" == the value of Username and Password TextBox.Text)
{
        Response.Write("Sign in successful");
        Response.Redirect("MemberTestPage.aspx");
}
else
{
Response.Write("Details incorrect, Please try again")
}
uqzxnwby

uqzxnwby1#

使用数据适配器填充数据表一旦你把数据放入数据表,你就可以得到查询的返回值并匹配参数

DataTable Dt = new Datatable();
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        sda.Fill(dt);

        if (dt.rows.count > 0 ) 
        {
           //MATCH FOUND
        }
sg3maiej

sg3maiej2#

你可以用..

string query= "SELECT * FROM Members where Username= 'usr' and Password= 'pwd'";
    SqlCommand cmd = new SqlCommand(query, con);
    MySqlDataAdapter objda = new MySqlDataAdapter(cmd);
    DataSet objDs = new DataSet();
    objda.Fill(objDs);
    if(objDs.Tables[0].Rows.Count>0)
    {
          Response.Write("Sign in successful");
          Response.Redirect("MemberTestPage.aspx");
    }
qacovj5a

qacovj5a3#

您可以在不使用数据集情况下执行以下操作,

var con = new SqlConnection("your connection string goes here");
SqlCommand cmd = new SqlCommand("SELECT * FROM Members where Username= 'usr' and Password= 'pwd'", con);
bool result = false;
cmd.Connection.Open();
using (cmd.Connection)
{
    SqlDataReader dr = cmd.ExecuteReader();
    if (dr.HasRows)
        result = true;
}
if (result == true)
    // Login successful
else
    // Login failed
igsr9ssn

igsr9ssn4#

string query = string.Format("SELECT TOP 1 * FROM [Table] WHERE Username = '{0}' and Password = '{1}'", txtUsername.Text, txtPassword.Text);
command = new OleDbCommand(query, con);
var reader = command.ExecuteReader();

if (reader.HasRows)
{
  //successfully login
}
else
  //error message
wlp8pajw

wlp8pajw5#

我认为首先最好使用ADO.NET库,因为它具有最佳的性能和高安全性。以下是我的建议。希望对你有用:

using System.Data.SqlClient;
...

string conStr = ConfigurationManager.ConnectionStrings["MembersConnectionString"].ConnectionString;
string sql = "SELECT * FROM Members where Username = @user and Password = @pass";
SqlParameter pUser = new SqlParameter("@user", TextBoxSignUser.Text);
SqlParameter pPass = new SqlParameter("@pass", TextBoxSignPass.Text);
using (SqlConnection con = new SqlConnection(conStr))
{
    using (SqlCommand cmd = new SqlCommand(sql, con))
    {
        cmd.Parameters.Add(pUser);
        cmd.Parameters.Add(pPass);

        con.Open();

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
                // Successfully signed in
                // Also you can access your fields' value using:
                //    1. its index (e.x. reader[0])
                //    2. or its name: (e.x. reader["Username"])
            }
            else
            {
                // Login failed
            }
        }
    }
}

相关问题