10.04.2012, 19:46 | #1 |
Участник
|
Узнать уникальный код сеанса для web сессии
Иногда требуется сохранять какие-то уникальные данные для сессии пользователя. В windows клиенте используют фукнцию sessionid(), которая возвращает код сеанса.
Столкнулся с необходимостью сделать аналогичный фукнционал на web портале 2009. Проблема в том, что для web пользователя код сеанса(возвращаемое значение sessionid()) меняется спустя несколько десятков секунд простоя в браузере. т.е. когда вы что-то нажали, подождали секунд 30, потом опять что-то нажали, код сеанса уже будет другой(соответственно и поменяется в форме активных пользователей) Вопрос в том - что можно использовать вместо sessionid() для web клиента? |
|
11.04.2012, 01:00 | #2 |
Участник
|
Грабли такие были, как обходили уточню у разработчика.
Если задача сессии - хранение данных для активного пользователя (настройки, код подтверждения авторизации и т.п.), то замена хранению данных в сессии - это: 1. кукисы (несекьюрно) 2. хранение массива данных в файле (ХМЛ или сеарилизованном) по коду юзера или всех в кучу |
|
11.04.2012, 11:45 | #3 |
Участник
|
по юзеру и кукис не подходит.
нично не мешает открыть 2 браузера на одном компьютере и работать с одной и той же формой. в этом случае и юзер и кукисы будут одинаковы |
|
11.04.2012, 12:26 | #4 |
Участник
|
Тут важно отметить, что два разных браузера
Если это закладки в одном - то механизм сессий у них отработат, как одна сесиия А если браузеры разные - то и кукисы тоже у них разные (это к слову) Ведение юзера же может быть в разрезе кода активации (своя сессия, уникальный код, присваивается при конекте, потом им "подписываются" все данные) То есть, все это тоже можно на приведенным способах. Механизм сессий вообще и есть "текстовый" файл, который сам веб-сервер и ведет То есть его можно реализовать локально для себя ЗЫ поправка - речь я вел про сессию на сервере, мог не так понять вопрос, если речь про sessionid() с сессией в АХ Уточнил - на веб-сервере сессия у нас не слетала, все стабильно было. А сессия в АХ (даже если слетает), где используется и какие проблемы от этого? Последний раз редактировалось BOAL; 11.04.2012 в 12:47. |
|
11.04.2012, 14:09 | #5 |
Участник
|
А как узнать код сессии на web сервере? причем узнать надо в коде X++
т.е. нужно как раз вот это Цитата:
разрезе кода активации (своя сессия, уникальный код, присваивается при конекте, потом им "подписываются" все данные)
|
|
11.04.2012, 14:32 | #6 |
Axapta
|
Не то?
X++: str getAXsessionID() { IISRequest request; IISRequestDictionary varList; str ret; str cookieText; int startPos; int endPos; { request = new IISRequest(); varList = request.serverVariables(); cookieText = request.serverVariables().itemTxt('HTTP_COOKIE'); if (cookieText) { // Format __AXAPTA_SESSION_ID=XXXXXXXX; startPos = strScan(cookieText,'__AXAPTA_SESSION_ID=',1,strlen(cookieText)); if (startPos) { // Session Identifier exists endPos = strScan(cookieText,';',startPos,strlen(cookieText)); if (endpos) { // multiple identifiers in cookie, use between start & end ret = substr(cookieText, startPos+20, EndPos-StartPos-20); } else { // no others, just use remainder of string ret = substr(cookieText, startPos+20, strLen(cookieText)-20); } } } } return ret; } |
|
11.04.2012, 17:04 | #7 |
Участник
|
Цитата:
http://geekswithblogs.net/Prabhats/a...x-session.aspx |
|
11.04.2012, 18:50 | #8 |
Участник
|
[QUOTE=oip;271169]Не то?
Не, открываю у себя 2 браузера, на обоих выдается одно и тоже значение nikos2001 - что -то совсем не понятно к чему это. функция нужна для x++ Но все равно спасибо |
|
11.04.2012, 19:00 | #9 |
Axapta
|
Два разных окна (или две разные вкладки) одного и того же браузера? Тогда конечно одинаковые.
|
|
11.04.2012, 19:07 | #10 |
Участник
|
два раза тыкнул в браузер. т.е. именно окна.
хотя завязываться на то, что это не будут разные вкладки тоже не очень правильно. портал то работает нормально при этом |
|
12.04.2012, 09:39 | #11 |
Участник
|
а класс websession ничем не может помочь?
|
|
Теги |
код сеанса |
|
|