Обнаружение Тайм-аута Сессии ASP.NET: Сессия. IsNewSession и обнаружение SessionCookie лучший способ сделать это?

( Сопровождающий Spyder здесь ) В нашей текущей стабильной версии такого нет (по состоянию на январь / 2019 г. это 3.3.2). Тем не менее, мы могли бы добавить что-то подобное для нашей следующей основной версии (Spyder 4, которая будет выпущена в конце этого года).

Пожалуйста, откройте вопрос в этого репо , чтобы обсудить, если / как мы должны реализовать это.

7
задан 9 January 2009 в 06:49
поделиться

2 ответа

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

Ваша проблема состоит в том, что, так как данных сессии не стало все, на что необходимо пойти, то, что новый входящий запрос создал новую сессию и запрос, входящий переносы идентификационный cookie сессии (указание, что это было зарегистрировано прежде).

Существует два подхода.

Cookie:

Сначала в Вашей странице входа в систему Вы могли создать дополнительный cookie, который указывает на состояние входа в систему пользователя. Когда пользователь вручную выходит из системы, значение cookie изменяется для указания на выход из системы. Запрос после сессии испытал таймаут, будет в дополнение к наличию IsNewSession верный будет также иметь cookie состояния входа в систему, показывающий, что пользователь все еще зарегистрирован, таким образом указывая, что пользователь вручную не принял решение выйти из системы.

База данных:

Второй подход должен сохранить sessionIDs в Таблице базы данных наряду с зарегистрированным состоянием. Когда вход в систему успешен, вводят sessionID в таблицу LoggedOnSessions. Когда пользователь вручную выходит из системы, удаляют sessionID из таблицы. Следовательно Ваше обнаружение тайм-аута может включать взгляд идентификатора сессии в таблице, если бы существующий это был тайм-аут (в этой точке, то необходимо, вероятно, удалить идентификатор также).

В целях обслуживания необходимо включать поле даты и времени истечения, которое установлено для намного дольше, чем какой-либо реалистический период входа в систему (неделя, например). Регулярно (например, еженедельно) удаляют записи в таблице, которые истекли.

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

7
ответ дан 7 December 2019 в 10:09
поделиться

You may also look in you web.config file under the tag authentication. This should look something like this:

<authentication mode="Windows">
  <forms defaultUrl="Default.aspx" loginUrl="Login.aspx" name=".aspxAuth">
  </forms>
</authentication>

Notice the attribute mode, it probably says Forms instead of Window in you web.config file. In this case, if you lose your session and then click on any link (let's say SalesChart.aspx) ASP.NET will take you directly to Login.aspx codebehind instead of SalesChart.aspx codebehind which is particularly annoying.

If you try Windows mode, you will be taken to the requested page (SalesChart.aspx) everytime, and then decide on your own what action to take if session is lost.

-1
ответ дан 7 December 2019 в 10:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: