Управление сессиями в GWT без использования Java на сервере? - PullRequest
0 голосов
/ 02 декабря 2008

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

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

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

Есть мысли или прозрения?

Ответы [ 3 ]

1 голос
/ 02 декабря 2008

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

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

1 голос
/ 02 декабря 2008

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

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

0 голосов
/ 02 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...