|
|
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Всем привет! Подскажите, как лучше (и можно ли вообще) инвалидировать чужую сессию? Я могу сохранить все сессии в какую-нибудь глобальную мапу и получить инстанс HttpSession по имени пользователя, допустим - не вопрос. Но на сколько безопасно вызывать метод invalidate() на такой "сохраненной" (т.е. полученной не законным путем с точки зрения контейнера сессии). Я могу так же не вызывать invalidate а вызвать setMaxInactiveInterval(1) допустим, что тоже проинвалидирует сессию. Но вопрос - не огребусь ли я потом проблем с таким решением? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 18:40 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiter, Ну а как админы работают? Не сам же юзверь делает себе харакири. Думаю это штатная работа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 19:12 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Чутье мне подсказывает что не все так просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 19:14 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiter, а что происходит при превышении времени сессии? для сервера все сессии свои, чужих нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 21:13 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
вадядля сервера все сессии свои, чужих нет. ) действительно. rabiterЧутье мне подсказывает что не все так просто а ты проверь чуйку. Напиши строчку и нажми "Пуск". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 22:17 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterЧутье мне подсказывает что не все так просто я при превышение времени бездествия юзера с сервером - инвалидирую сессию, и командой с сервера перевожу браузер на страницу авторизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 22:34 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Petro123rabiterЧутье мне подсказывает что не все так просто а ты проверь чуйку. Напиши строчку и нажми "Пуск". Проверить-то я проверю. Оно сейчас заработает, а на другом сервере или в кластере возьмет и не заработает. Мне надо наверняка знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 23:46 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
вадяrabiterЧутье мне подсказывает что не все так просто я при превышение времени бездествия юзера с сервером - инвалидирую сессию, и командой с сервера перевожу браузер на страницу авторизации. Вы понимаете, почему я сомневаюсь, мы ведь не знаем, что там за HttpSession сервер нам подсовывает, чтобы так вот взять и сохранить в глобальной HashMap и потом переиспользовать. А вдруг это вообще какая-нибудь прокси или обертка, которая фиг знает куда ведет. Сейчас к сессии, а потом внутри у сервака что-нибудь щелкнуло, он что-нибудь у себя подчистил, и вуаля, в руках у тебя голая прокси или обертка, на которой хоть завызывайся invalidate. Вы понимаете? Но у вас почти такой же сценарий, что и в моем случае. Мне надо собственный механизм инвалидации сессии сделать. Для этого и хотел сохранять сессии. Говорите у вас никаких проблем не было с такой имплементацией? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 23:53 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Вот здесь, например, пишут, что не стоит так делать http://stackoverflow.com/questions/13793119/store-and-invalidate-java-httpsession-from-different-user ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2016, 23:57 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiter, это не стоит делать в том случае , если юзер активно работает и его работа прерывается. если юзер не взаимодействует с сервером - считается, что он не работает со страницей. это, конечно, чисто условное правило. тогда и можно инвалидировать сессию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 05:54 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiter, поставь время сессии в 2 минуты и посмотри что будет. весь вопрос сводится к цели прерывания сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 07:59 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Аффтар! Термины где то что щелкнуло и где то что почистил это термины домохозяек. Как обычно тебе лень разбираться со штатным и проще писать мапу. Я свой каждый кусок кода тестирую. А ты пишешь с закрытым глазом для каких то кластеров на будущее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 08:53 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterЯ могу сохранить все сессии в какую-нибудь глобальную мапу и получить инстанс HttpSession по имени пользователя, допустим - не вопрос. Но на сколько безопасно вызывать метод invalidate() на такой "сохраненной" (т.е. полученной не законным путем с точки зрения контейнера сессии). Для начала надо сказать, что за контейнер. Потому что когда jetty+guice+самопальная авторизация то всё работает именно так. А если есть spring/javaee/... то надо смотреть, что там УЖЕ ЕСТЬ для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 09:02 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Есть события старта и конца сессии у каждого юзверя. Если в api нет поиска, то делаешь свой список. Потом обнуляешь сессию того кого нужно. Быстрее попробовать чем обсуждать открыв Ослик и фокс на экране. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 09:08 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Petro123Аффтар! Термины где то что щелкнуло и где то что почистил это термины домохозяек. Как обычно тебе лень разбираться со штатным и проще писать мапу. Я свой каждый кусок кода тестирую. А ты пишешь с закрытым глазом для каких то кластеров на будущее. Вы нормальный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 10:39 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiter, скажу тебе ещё проще. Ты написал много воды. И ничего конкретного. Предлагаю перейти к коду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 10:41 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Сервера приложения могут быть разные в моем случае: wildfly 10, GlassFish 4, в будущем намечается web sphere (хотя надеюсь нет) Никого разве не смущает сама идея взять и сохранить такой технический объект как httpsession в мапе чтобы из под другого потока взять ее и инвалидовать? Задача такая - иметь возможность инвалидировать чужие сессии (допустим для администратора) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 10:57 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterЗадача такая - иметь возможность инвалидировать чужие сессии (допустим для администратора) У Tomcat в админке есть такое. Уверен у других контейнеров тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 11:02 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterЧутье мне подсказывает что не все так просто Ваше чутьё вас обманывает на этот раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 11:03 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо! Админка сервера приложений не подойдет, нужна своя страничка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 11:16 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterСпасибо! Админка сервера приложений не подойдет, нужна своя страничка. Своя страничка, которая через JMX работает с контейнером? Если вас очень сильно пугает перспектива держать коллекцию из HttpSession, то собирайте только jsessionid. А валидируйте сессию дополнительно фильтром при запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 11:27 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Да, как запасной вариант у меня именно валидировать сессию при запросе. Про JMX - никогда не использовал, спасибо за наводку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 11:47 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterЗадача такая - иметь возможность инвалидировать чужие сессии (допустим для администратора) OK скажу в двадцатый раз. Для такой задачи ничего изобретать не надо. Вот, например, у SSO посложнее, т.к. там контроль идёт не на своём сервере, а на том который и даёт общую сессию между серверами. Для вашей задачи это оверхед. Удачи! Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 11:49 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Кстати, как минимум под WildFly Код: java 1. Каждый раз для одного и того же пользователя возвращает разные инстансы класса HttpSession: Код: java Это меня и напрягает немного. Т.е. я возьму один из них и сохраню в мапе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 11:52 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterКаждый раз для одного и того же пользователя возвращает разные инстансы класса HttpSession: в одной сессии? Выведи в лог 2-3 запроса по одной сессии для одного юзверя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 11:54 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Petro123, Да, для одного и того же пользователя в одной сессии при разных запросах метод Код: java 1. возвращает разные инстансы класса io.undertow.servlet.spec.HttpSessionImpl (для для WildFly) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:00 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiter, тут не знаю. Но в любом случае делай дальше код для теста как сказал вадя и я выше писал про 2 браузера. Пробуй сделать то что тебе надо с чужой сессией. Слона программисты едят по частям)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:12 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Опенсурс же. Можно посмотреть реализацию io.undertow.servlet.spec.HttpSessionImpl Выглядит оно как обертка над родной сессией. И, что интересно, последний коммит в той ветке, на которую навел гугл: авторUNDERTOW-909 Session invalidation not reflected when coming from another concurrent request ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:21 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Petro123, Сейчас проверил, сохранил сессии в глобальной мапе. Залогинился в разных браузерах под пользователями A и B. И попробовал из под пользователя "A" инвалидировать сессию пользователя "В". В результате инвалидными стали обе сессии - и пользователя A и пользователя B. Так что не все так просто, как я и думал. Это под WildFly. Сейчас под GlassFish проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:25 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Alexander A. SakОпенсурс же. Можно посмотреть реализацию io.undertow.servlet.spec.HttpSessionImpl Выглядит оно как обертка над родной сессией. И, что интересно, последний коммит в той ветке, на которую навел гугл: авторUNDERTOW-909 Session invalidation not reflected when coming from another concurrent request Спасибо! Опенсорс, да, но мне надо WildFly и GlassFish, они разные имплементации используют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:30 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterPetro123, Сейчас проверил, сохранил сессии в глобальной мапе. Залогинился в разных браузерах под пользователями A и B. И попробовал из под пользователя "A" инвалидировать сессию пользователя "В". В результате инвалидными стали обе сессии - и пользователя A и пользователя B. Так что не все так просто, как я и думал. Это под WildFly. Сейчас под GlassFish проверю. наборот сделай. В фильтре при входе B проверяй следует ли обнулить (флаг). Если да, то прямо в фильтре ДО сервлета обнуляй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:44 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Под Glassfish нормально получилось инвалидировать (в отличии от WildFly). Но в целом ясно, что в эта авантюру лучше не впутываться а хранить только JSESSIONID и инвалидировать сессии при входящих запросах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:46 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Petro123rabiterPetro123, Сейчас проверил, сохранил сессии в глобальной мапе. Залогинился в разных браузерах под пользователями A и B. И попробовал из под пользователя "A" инвалидировать сессию пользователя "В". В результате инвалидными стали обе сессии - и пользователя A и пользователя B. Так что не все так просто, как я и думал. Это под WildFly. Сейчас под GlassFish проверю. наборот сделай. В фильтре при входе B проверяй следует ли обнулить (флаг). Если да, то прямо в фильтре ДО сервлета обнуляй. Да, именно так буду делать, спасибо! А я правильно предчувствовал что не все так просто ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:48 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterА я правильно предчувствовал что не все так просто ;-) )) Лично мне непонятно почему адреса разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 12:55 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Petro123, Ну это обертка вокруг сессии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 13:03 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Под GlassFish, кстати, каждый раз один и тот же инстанс: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 13:13 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterPetro123, Ну это обертка вокруг сессии тогда опять вопрос - зачем? Пусть обёртка будет интефейсом или чем то с потоянным адресом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 13:26 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
rabiterА я правильно предчувствовал что не все так просто ;-) подумал...подумал). Всё получается логично. Мапой сессий заведует сервер. И нефиг создавать параллельно какие то свои мапы. Это масштабируемо. Т.е. для управлениями сессиями не своими есть фильтры. Где пока юзверь не зайдёт, ты с его сессией ничего не сделаешь. Ещё есть листенеры где тоже будет ссылка на сессию AFAIK. Так что вернулись к нашим баранам - никаких списков вне сервера. IMHO Пока так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 13:48 |
|
||
|
Инвалидировать чужую http сессию
|
|||
|---|---|---|---|
|
#18+
Petro123rabiterА я правильно предчувствовал что не все так просто ;-) подумал...подумал). Всё получается логично. Мапой сессий заведует сервер. И нефиг создавать параллельно какие то свои мапы. Это масштабируемо. Т.е. для управлениями сессиями не своими есть фильтры. Где пока юзверь не зайдёт, ты с его сессией ничего не сделаешь. Ещё есть листенеры где тоже будет ссылка на сессию AFAIK. Так что вернулись к нашим баранам - никаких списков вне сервера. IMHO Пока так... Вот в том-то и дело, это меня и смущало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 14:07 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123462]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 301ms |
| total: | 497ms |

| 0 / 0 |
