затваряне на всички уеб страници при изчакване на сесията

Когато сесията изтече в приложението asp.net, трябва да затворим всички уеб страници, които вече са отворени от потребител.

Всяка страница има връзка за излизане. Когато потребителят щракне върху тази връзка, началната страница се пренасочва към тази страница.

В този случай другите отворени страници също трябва да бъдат затворени.

Как можем да направим това?


person gopal    schedule 18.12.2009    source източник
comment
Мисля, че можете да пренасочите към началната си страница   -  person ACP    schedule 18.12.2009
comment
не можете да затворите всички страници   -  person ACP    schedule 18.12.2009
comment
Проблемът е, че потребителят си мисли, че сесията му е приключила. Така че остави другите отворени страници както беше с данните. Тук се чудим за сигурността на данните.   -  person gopal    schedule 18.12.2009


Отговори (3)


За всички страници:

  1. AJAX се обажда обратно на сървъра, за да провери дали сесията е изтекла.
  2. Анализирайте резултат от AJAX
  3. Ако сесията е приключила, затворете прозореца или пренасочете към страницата, в която сте излезли.
person mauris    schedule 18.12.2009
comment
Няма ли извикването на AJAX към сървъра да поддържа сесията жива, особено ако проверява за текущата сесия? - person Razzie; 18.12.2009
comment
Съгласен съм с Razzie... Но какво ще стане, ако AJAX извика уеб услуга... Аз съм начинаещ в Webservice.. Извикването на уеб услугата ще се изпълнява ли в същата сесия на извикването на оригиналната страница... ?? - person The King; 18.12.2009
comment
тогава прекратяването на сесията може да се извърши ръчно, за да допълни прекратяването на сесията на ASP.NET. - person mauris; 18.12.2009
comment
AFAIK можете да зададете само EnableSession на уеб метода, като използвате атрибута WebMethod. Ако го активирате, сесията ще се поддържа жива. Ако го деактивирате, не знаете дали сесията е жива... - person Vinz; 18.12.2009

Втората мисъл... можем да използваме казаното от @thephpdeveloper, особено когато потребителят излиза официално... (като щракване върху бутона за излизане) Веднъж След като се случи официално излизане... Може да се използва такова Ajax обратно извикване, защото сесията ще бъде валидна, но няма да има потребител... Използвайки това, можем да сигнализираме страницата и да затворим прозореца на браузъра

person The King    schedule 18.12.2009

Както Razzie коментира, извършването на обратно извикване на AJAX към същото уеб приложение ще поддържа сесията жива. Използването на уеб услуга също няма да реши проблема.

Това решение избягва поддържането на сесията жива:

  • Съхранявайте всяка сесия в базата данни. Това може да се направи в събитието Session_Start в Global.asax или след влизане.
  • Изтрийте изтекли сесии от базата данни в събитието Session_End във вашия Global.asax файл или след излизане.
  • Правете периодично AJAX обратно извикване към различно уеб приложение, напр. уеб, работещ на поддомейн, за да провери в базата данни дали сесията все още съществува.

Предлагам ви да използвате SessionID за идентифициране на сесиите.

person Vinz    schedule 18.12.2009