Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как восстановить сессию / 25 сообщений из 288, страница 1 из 12
28.12.2017, 15:14
    #39577437
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Добрый день!

Сейчас после авторизации данные пользователя и подключения к бд записываются в сессию. Но по истечению определенного времени сессия истекает и на данный момент, если пользователь хочет сделать какое-либо действие, в Page_PreInit проверяю HttpContext.Current.Session["ConnectionStrings"] и если она не определена , то делается редирект на страницу авторизации.

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

Пробовал так, но это не работает, появляется окно "Status Code: 200 Status Text: NORESPONSE", а окно ReloginWindow не открывается
Код: plaintext
1.
2.
3.
4.
5.
6.
 if (HttpContext.Current.Session["ConnectionStrings"] == null)
        { 
            this.ReloginWindow.Show();
            this.ReloginWindow.Call("body.highlight");
            this.Response.End();
        }



Можно ли как то приостановить или корректно завершить запрос Page_PreInit или нужно раньше делать проверку?
Посоветуйте, пожалуйста, как бы вы сделали это?
...
Рейтинг: 0 / 0
29.12.2017, 07:47
    #39577672
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
ilshatkin,

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

всё правильно делается, сессия истекла, пользователь попадает на страницу авторизации и начинает работу сначала с точки зрения сессионных данных.

вообще, чтобы избежать подобных проблем, либо не использовать сессию вообще по возможности, либо не использовать для чувствительных для работы пользователя данных, храните их в БД
...
Рейтинг: 0 / 0
29.12.2017, 11:57
    #39577790
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
hVostt,
Не может быть чтобы не было вариантов. Это же неудобно.
Я таких сайтов уже лет 5 не видел.
Работает с Core вариант?:
Код: c#
1.
options.IdleTimeout = TimeSpan.FromSeconds(10);


Кроме того, по умолчанию таймаут сессии 20 мин. Но максимум параметра 1 год!
Это значит юзверь должен тупо смотреть 20 мин на экран и ничего не делать.
...
Рейтинг: 0 / 0
29.12.2017, 12:08
    #39577794
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Вот хороший вариант:

Код: xml
1.
2.
3.
4.
5.
  <system.web>
    <sessionState mode="Off" />
    <httpModules>
      <remove name="Session" />
    </httpModules>
...
Рейтинг: 0 / 0
29.12.2017, 12:20
    #39577802
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
skyANA,
Ну, это лечение головной боли гильотиной
...
Рейтинг: 0 / 0
29.12.2017, 15:22
    #39577955
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Petro123Не может быть чтобы не было вариантов. Это же неудобно.

варианты прострелить себе ногу есть всегда
и хорошо, если ногу
...
Рейтинг: 0 / 0
29.12.2017, 15:42
    #39577962
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Petro123skyANA,
Ну, это лечение головной боли гильотинойА ведь верно подмечено.

Session - это головная боль. Зачем её лечить, если можно просто избавиться?
...
Рейтинг: 0 / 0
29.12.2017, 15:49
    #39577967
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
ilshatkinПосоветуйте, пожалуйста, как бы вы сделали это?Редирект на страницу логина с парамтрами куда возвращаться после входа.
...
Рейтинг: 0 / 0
29.12.2017, 15:53
    #39577972
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
В случае FormsAuthentication параметр называется ReturnUrl.
...
Рейтинг: 0 / 0
29.12.2017, 17:43
    #39578032
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
hVosttPetro123Не может быть чтобы не было вариантов. Это же неудобно.

варианты прострелить себе ногу есть всегда
и хорошо, если ногу
Профи все фичи использует аккуратно и к месту)). Даже если нужно что то положить в сессию.
...
Рейтинг: 0 / 0
29.12.2017, 17:44
    #39578034
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
skyANASession - это головная боль.-1
Все используют, а в шарпе головная боль.
...
Рейтинг: 0 / 0
29.12.2017, 21:03
    #39578076
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Спасибо ребята что откликнулись. В итоге накостылял, получилось не идеально но терпимо на первое время.

Здесь специфика в том что это веб-приложение для ведения учета и если в нем работать, то он может стоять открытым долгое время без каких либо действий и по возвращению хотелось бы не терять открытые окна и тому подобное из-за редиректа на страницу авторизации.

Сессию можно назвать не восстанавливаю, а делаю новую и продолжаю на нем работать дальше.

Веб-приложение на web forms с ext.net.

Сделал доп. модальное окно для авторизации внутри приложения и если происходит запрос на сервер и обнаруживается что сессия истекла, то это окно показывается, а отправленный запрос просто возвращает null. Далее если вводится верный пароль, то создается новая сессия и работаем на ней. Сейчас не идеально то что по идее нужно было бы повторно запустить тот неудачный запрос автоматом и завершить действия, но пока это не стал делать, то есть человек должен повторно инициировать сове действие.
...
Рейтинг: 0 / 0
29.12.2017, 21:53
    #39578086
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
ilshatkinделаю новую и продолжаю на нем работать дальше.
а это поднять повыше не пробовал?
Куча отзывов что этот параметр не работает:
Код: c#
1.
<sessionState timeout="8-ми часовой рабочий день" ... />
...
Рейтинг: 0 / 0
29.12.2017, 22:02
    #39578087
ilshatkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Petro123,

пробовал, сейчас стоит <sessionState timeout="10000" />
...
Рейтинг: 0 / 0
29.12.2017, 22:13
    #39578093
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Petro123Профи все фичи использует аккуратно и к месту)). Даже если нужно что то положить в сессию.

профи не используют все фичи только потому что они есть
...
Рейтинг: 0 / 0
29.12.2017, 22:41
    #39578101
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
OFF
hVosttпрофи не используют все фичи только потому что они есть
тут важна линейка решений от простого к сложному.
Допустим есть другой ТС и нужна сессия для хранения 2-х, 3-х атрибутов из полей при переходе по страничкам.
Твои действия?
...
Рейтинг: 0 / 0
29.12.2017, 22:43
    #39578102
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
ilshatkinPetro123,
пробовал, сейчас стоит <sessionState timeout="10000" />
OK. Странно что все говорят, что параметр нерабочий).
...
Рейтинг: 0 / 0
29.12.2017, 22:44
    #39578103
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
ilshatkinЗдесь специфика в том что это веб-приложение для ведения учета и если в нем работать, то он может стоять открытым долгое время без каких либо действий и по возвращению хотелось бы не терять открытые окна и тому подобное из-за редиректа на страницу авторизации.Замечу, что это прекрасно реализуется без использования Session.
...
Рейтинг: 0 / 0
29.12.2017, 22:48
    #39578106
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Petro123skyANASession - это головная боль.-1
Все используют, а в шарпе головная боль.Думаю редко какое высоконагруженное приложение на шарпе использует Session
...
Рейтинг: 0 / 0
29.12.2017, 23:15
    #39578110
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
skyANAвысоконагруженное приложение
это очень расплывчатое понятие.
...
Рейтинг: 0 / 0
29.12.2017, 23:20
    #39578113
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
ilshatkin, раз Вы используете Session, то Вам будет полезно знать,
что по умолчанию запросы в рамках одной сессии обрабатываются последовательно.

15 лет назад это не было проблемой, но сейчас,
когда с одной страницы зачастую посылается множество AJAX запросов,
когда пользователи открывают сразу несколько вкладок в браузере для одного приложения,
на ровном месте получаем узкое место и проблемы производительности на стороне клиента.

А всё по тому, что по умолчанию Session в начале запроса блокируется до его окончания.
...
Рейтинг: 0 / 0
29.12.2017, 23:27
    #39578115
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Petro123skyANAвысоконагруженное приложение
это очень расплывчатое понятие.Тебя не это должно интересовать, а связанные с использованием Session проблемы
...
Рейтинг: 0 / 0
29.12.2017, 23:51
    #39578119
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
skyANAilshatkin, раз Вы используете Session, то Вам будет полезно знать,
что по умолчанию запросы в рамках одной сессии обрабатываются последовательно.

15 лет назад это не было проблемой, но сейчас,
когда с одной страницы зачастую посылается множество AJAX запросов,
когда пользователи открывают сразу несколько вкладок в браузере для одного приложения,
на ровном месте получаем узкое место и проблемы производительности на стороне клиента.

А всё по тому, что по умолчанию Session в начале запроса блокируется до его окончания.
браузер имеет ограничение на количество соединений с сервером (для параллельности).
Давай его как и сессию запретим или выкинем).
Фигня это всё.
Надо писать так, чтобы один запрос занимал время 15 миллисек.
Мы же не одноклассники пишем.
Пусть ТС сначала с формс на Core перейдёт).
Удачи ему!
...
Рейтинг: 0 / 0
29.12.2017, 23:53
    #39578120
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
skyANAа связанные с использованием Session проблемы
профи тут любят так отвечать: "с сессией нет проблем".
Вот с параметром сессии таймаутом надо разобраться.
...
Рейтинг: 0 / 0
29.12.2017, 23:59
    #39578122
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить сессию
Petro123,

молодец, так держать! Фигня всё это, не зачем разбираться как оно работает и какие могут быть проблемы
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как восстановить сессию / 25 сообщений из 288, страница 1 из 12
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]