Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сделать правильный logout в ASP.NET?

408
08 февраля 2009 года
Lei fang
265 / / 01.10.2005
Здравствуйте. Появилась у меня необходимость сделать логаут для сайта и столкнулся я с такой очень странной проблемой %)
Пытался сделать логуат разными способами.
Session.Abandon()
потом Session.Clear()
даже явно делал Session["login"] = null при логауте.
Картина следующая, есть у меня страница, к которой гости не должны иметь доступа.

гость не заходившиый в систему не может попасть на страницу указав ее явный путь, к примеру http://bla bla bla/page.aspx

залогиненный юзер может попасть на страницу указав и явный путь и по ссылке на страницу

юзер сделавший логаут может попасть на страницу указав явный путь %)

у страницы этой такой код:
 
Код:
protected void Page_Init(object sender, EventArgs e)
    {
        if (Session["login"] == null)
            Response.Close();
        else if (ml.GetAcctPermissionsByLogin(Session["login"].ToString()) > 0)
            Response.Close();
        else
            Response.Write(Session["login"].ToString()); //это вообще добавил для проверки
    }

самое интересное что на последней строчке вылетает исключение Session = 'Session' threw an exception of type 'System.ArgumentNullException'
Типа Session["login"] == null. Но почему не срабатывает первая проверка??? Что за бред
48K
25 марта 2009 года
Kosten594
1 / / 25.03.2009
Цитата:
ml.GetAcctPermissionsByLogin(Session["login"].ToString()) > 0


ты какую-то свою аутентификацию делаешь (не встроенную)?

408
25 марта 2009 года
Lei fang
265 / / 01.10.2005
Ага, но я уже решил проблему, отключив кеширование в браузерах с помощью:
 
Код:
Response.Expires = 60;
        Response.ExpiresAbsolute = System.DateTime.Now;
        Response.AddHeader("pragma", "no-cache");
        Response.AddHeader("cache-control", "private");
        Response.CacheControl = "no-cache";


Вот уж не знаю, как кеш связан с тем, что не выполнялось первое условие, но на последней строчке было нулл поинтер эксепшн

Опере правда все равно...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог