Почему значение переменной сессии остается даже после всего кода уничтожения?
login.aspx
if (IsPostBack == false)
{
//destroy any login information
Session["password"] = "false";
Session["login"] = "false";
Session.Abandon();
Session.RemoveAll();
}
if (TextBox2.Text == main_password)
{//then he is website server admin
Session["password"] = "password";
Session["login"] = "true";
Response.Redirect("~/TABLE.aspx");
}
table.aspx
//checking if website server admin
if ("password" == (string)Session["password"])
{
link_logout.Enabled = true;
}//if ends
else
{//not authorized
Response.Redirect("~/Identify.aspx");
}//else ends
Когда я нажимаю на ссылку выхода
- страница входа в систему загружается, вызывая разрушение всех состояний сеанса.
- страница входа подтверждает это, когда я использую
response.write
просмотреть значения переменных сеанса. - когда я даю имя пользователя и пароль и нажимаю кнопку входа, он перенаправляет на страницу таблицы.
- когда я нажимаю кнопку выхода, он перенаправляет на страницу входа, а страница входа уничтожает информацию.
проблема
- после того, как информация для входа уничтожена, я нажимаю на ссылку таблицы, она переходит на страницу таблицы, где указано НЕТ НЕТ и перенаправляет на страницу входа.
- НО, если я скопирую и вставлю URL страницы таблицы, то независимо от того, что я делаю, это позволяет мне просматривать страницу. То есть он принимает значение переменной сеанса и возвращает значение ИСТИНА, даже когда значения были уничтожены.
Я не могу использовать функции входа в asp.net, мои ограничения не позволяют мне использовать этот элемент управления.
2 ответа
Решение
Вы видите кешированную версию страницы в браузере.
Если вы нажмете Ctrl+F5, он должен исчезнуть.
Сделайте link_logout кнопкой ссылки, поместите щелчок мышью на страницу и удалите переменные сеанса. Затем выполните перенаправление ответа сервера.