Делаю авторизацию. После ввода логина и пароля со страницы логина отправляются cookies и на странице user принимаются и проверяются. Если данные соответствуют, то пользователь остается на странице. Если нет, его возвращает. Проблема в том, что на страницу пользователя cookies не приходят. При отладке в них пустое значение.
UDP:Проблема оказалась в том, что почему-то не удалялись старые cookie и он все время подгружал их с пустыми значениями. Почистил и проблема пропала. Код рабочий
Код функции что отправляет cookies:
Dictionary<string, string> db = new Dictionary<string, string>();
SqlCommand getUsersCredCmd = new SqlCommand("SELECT [Login], [Pass] FROM [Users]", sqlConnection);
SqlDataReader sqlReader = null;
try
{
sqlReader = await getUsersCredCmd.ExecuteReaderAsync();
while (await sqlReader.ReadAsync())
{
db.Add(Convert.ToString(sqlReader["Login"]), Convert.ToString(sqlReader["Pass"]));
}
}
catch { }
finally
{
if (sqlReader != null)
{
sqlReader.Close();
}
}
if (db.Keys.Contains(TextBox1.Text) && TextBox2.Text == db[TextBox1.Text])
{
HttpCookie login = new HttpCookie("login", TextBox1.Text);
HttpCookie sign = new HttpCookie("sign", SignGenerator.GetSign(TextBox1.Text + "bytepp"));
Response.Cookies.Add(login);
Response.Cookies.Add(sign);
Response.Redirect("UserPage.aspx", false);
}
Код функции, что принимает и обрабатывает cookies:
HttpCookie login = Request.Cookies["login"];
HttpCookie sign = Request.Cookies["sign"];
if (login != null && sign != null)
{
if (sign.Value == SignGenerator.GetSign(login.Value + "bytepp"))
{
Label1.Text = login.Value;
return;
}
}
Response.Redirect("LoginPage.aspx");
Код SignGenerator:
public static string GetSign(string s) {
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
byte[] hash = provider.ComputeHash(Encoding.Default.GetBytes(s));
return BitConverter.ToString(hash).ToLower().Replace("-", "");
}
Подскажите пожалуйста в чем проблема?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей