Как проверить пароль и имя пользователя для сайта в C#

У меня есть простой веб-сайт для входа, который является моим первым проектом веб-сайта в 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")
}

5 ответов

Я думаю, что в первую очередь лучше использовать библиотеки 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);

        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
            }
        }
    }
}

Заполните таблицу данных с помощью адаптера данных, после чего вы получите данные в таблицу данных, вы можете получить возвращаемые значения запроса и сопоставить параметры

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

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

Вы можете использовать как..

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");
    }

Вы можете сделать следующее без использования наборов данных,

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
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
Другие вопросы по тегам