Управление сеансом в GWT без использования Java на сервере?

Я использую GWT для своего клиентского приложения. Я не использую GWT / Java для сервера. Однако я не уверен, как справиться с управлением сеансом. Приложение GWT находится на одной странице, все вызовы сервера выполняются через AJAX. Если сеанс истекает на сервере ... предположим, что пользователь не закрыл браузер, но оставил приложение открытым, как мой сервер может уведомить приложение о том, что сеанс истек, и что на стороне клиента должен отображаться экран входа в систему очередной раз?

Что подразумевается под управлением сеансом на стороне клиента? Это кажется небезопасным по своей сути.

Я не ищу код. Я ищу идеи, методы, потенциальные решения и т. д. Я рассматривал Comet http://en.wikipedia.org/wiki/Comet_(programming), но не похоже, что она будет работать очень хорошо без использования Java на стороне сервера. Может я ошибаюсь? Я тоже не хочу опрашивать сервер.

Есть мысли или идеи?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
4 180
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Ответ принят как подходящий

Не зная, как у вас работает ваш RPC, трудно дать хороший совет.

Если ваша служба AJAX требует аутентификации пользователя (IE имеет действующий сеанс), можно просто отправить ошибку 401, в которой говорится, что пользователь недействителен. Клиентская сторона может интерпретировать ошибку 401 как сообщение о том, что она должна настроить пользователя на повторную аутентификацию.

Я не использую RPC, объект запроса GWT - это просто оболочка вокруг XMLHttpRequest. Отличная идея! Никогда не думал об изменении кода статуса http. Возможно, я этим воспользуюсь.

JP Richardson 02.12.2008 01:46

Мы справились с этим в нашем приложении, обнаружив, когда сервер отправил обратно перенаправление на экран входа в систему (это будет через ответ на вызов Ajax), и появилось диалоговое окно, запрашивающее у пользователя пароль снова, но предварительно заполненное их имя пользователя. Затем мы разместили это в том же месте, что и страница входа, как если бы это была страница входа, и поэтому пользователь автоматически вошел в этот новый сеанс. Наконец, мы просто повторно отправили вызов ajax еще раз, так что это был простой процесс для пользователя (например: им не нужно было снова щелкать действие).

Поскольку мы сохранили все состояние на клиенте, а не в переменных сеанса, у нас не было проблем с попыткой сохранить данные между сеансами.

Другие вопросы по теме