Ahsan Aijaz Ответов: 1

Когда я выхожу из системы он все еще входит в систему и когда я возвращаюсь он все еще входит в систему


Когда я выхожу из системы asp.net страница, но она все еще входит в систему ,если я копирую ссылку в новой вкладке после выхода из системы, она все еще входит в систему , также после выхода из системы, если я нажимаю кнопку Назад браузера, она все еще показывает вход,
мне нужна помощь. я добавляю код страницы выхода из системы также plz help

Что я уже пробовал:

public partial class logout : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
                Session.Clear();


                Session.Abandon();
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                FormsAuthentication.SignOut();
                Session.Remove("LOGINNAME");
                Session.Remove("LOGINPASSWORD");
                Session.Remove("Index");
                Session.Remove("Default");
                Session.Remove("logout");
                Session.Contents.RemoveAll();
                Session.RemoveAll();
                Cache.Remove("LOGINNAME");
                Cache.Remove("LOGINPASSWORD");
                Cache.Remove("AGENTID");

                Response.Cache.SetNoStore();
                Response.Cache.SetNoServerCaching();

                Response.Expires = -1;
                Session.Timeout=1;
                Response.Redirect("Default.aspx", true);
                Response.Flush();
                

            }
        }

Richard Deeming

Session.Remove("LOGINNAME");
Session.Remove("LOGINPASSWORD");

Вы используете аутентификацию форм, поэтому нет необходимости хранить имя пользователя где-либо еще. И вы должны НИКОГДА храните пароль в памяти или в файле cookie.

Это также заставляет меня подозревать, что вы можете хранить пароль в базе данных в виде обычного текста, что является серьезным сбоем безопасности.

Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хеширование паролей - все правильно[^]

Cache.Remove("LOGINNAME");
Cache.Remove("LOGINPASSWORD");
Cache.Remove("AGENTID");

То Cache является глобальным для вашего приложения, а не для конкретного пользователя. Если вы храните пользовательские данные в Cache тогда вы столкнетесь с некоторыми серьезными ошибками, как только несколько пользователей будут использовать ваше приложение одновременно!

1 Ответов

Рейтинг:
4

Prifti Constantine

Одной из проблем может быть :

Response.Redirect("Default.aspx", true);

с тех пор, как вы даете ответу значение true.Перенаправлять
ничто не говорит о том, что конкретная строка кода будет выполнена....
Для того чтобы выполнить
Response.Flush
вы должны
присвойте значение false, чтобы также проверить наличие любых строк кода ниже
ответ.Перенаправлять.

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

Вместо ответа.Промывать...
Таким образом,
EndRequest
будет срабатывать..


Ahsan Aijaz

Приятель Не Работает......
Любой приятель мне поможет.

Richard Deeming

Если это не работает, почему вы приняли решение?