protected void Button_Click(object sender, EventArgs e) { Dictionary <string, string> db = new Dictionary <string, string>(); // Создаем словарик(коллекцию) для занесения ключа и значения // Логина и пароля аккаунта для проверки на подлинность SqlCommand getUserInfo = new SqlCommand("SELECT [Username], [Password] FROM [Users]", sqlconnection); // Создаем команду БД // Которая выбирает Логин и пароль с users SqlDataReader sqlReader = null; try { sqlReader = getUserInfo.ExecuteReader(); // помещаем в ридер команду sql(которая описана выше) и ридер читает её while (sqlReader.Read()) { db.Add(Convert.ToString(sqlReader["Username"]), Convert.ToString(sqlReader["Password"])); // Записываем ключ и значение(key value) } } catch { } finally { if (sqlReader != null) { sqlReader.Close(); } } if (!db.Keys.Contains(txtUsername.Text)) // Проверяем на наличие в словаре username { ScriptManager.RegisterStartupScript(this, this.GetType(), // Нету, то выдаем messagebox с соотвественной надписью и функцией перехода назад "alert", "alert('Incorrect account password or Username');window.location ='Loginpage.aspx';", true); return; } if (txtPassword.Text == db[txtUsername.Text]) // сравниваем принадлежность пароля к логину { HttpCookie login = new HttpCookie("login", txtUsername.Text); // Это проверка на наличие соотвествующих куки у пользователя, тоесть защита от неавторизированного пользователя HttpCookie sign = new HttpCookie("sign", PasswordToHash.GetPtH(txtUsername.Text + "bytepp")); // Создаем два новых файла куки и присваиваем им значение //у логина значение логин, а вот у подписи(sign) значение берется из класса с методом генерации хэша. Response.Cookies.Add(login); // добавляем куки к логину и подписи Response.Cookies.Add(sign); Response.Redirect("Profile.aspx"); // перенаправляем юзера на страницу с его информацией } else { Response.Write("<script>alert('Incorrect account password or Username');</script>"); } sqlconnection.Close(); // Закрываем соединение с БД }
protected void Page_Load(object sender, EventArgs e) { HttpCookie login = Request.Cookies["login"]; // Возвращаем куки новым переменным логин и подпись HttpCookie sign = Request.Cookies["sign"]; if (login != null && sign != null) { if (sign.Value == PasswordToHash.GetPtH(login.Value + "bytepp")) // проверяем на правильность куки используя метод хэширования { Label.Text = login.Value; LabelUn.Text = login.Value; } else { Response.Redirect("Logout.aspx"); } } else { Response.Redirect("Logout.aspx"); } string connectionstring = ConfigurationManager.ConnectionStrings["DB"].ConnectionString; // Подключаем БД sqlconnection = new SqlConnection(connectionstring); sqlconnection.Open(); SqlCommand getInfo = new SqlCommand("Select Email, Firstname, Surname, Gender, Phone, Address FROM [Users] WHERE Username='******'", sqlconnection); SqlDataReader dataReader; // Строчкой выше, создаем запрос в БД на информацию по юзернейму dataReader = getInfo.ExecuteReader(); while (dataReader.Read()) { Label1.Text = dataReader[0].ToString(); // Присваиваем лэйблам значения с БД(копипаст ибо label не индексируется) Label2.Text = dataReader[1].ToString(); Label3.Text = dataReader[2].ToString(); Label4.Text = dataReader[3].ToString(); Label5.Text = dataReader[4].ToString(); Label6.Text = dataReader[5].ToString(); } sqlconnection.Close(); }