GWT: проблема с архитектурой приложения - PullRequest
3 голосов
/ 28 января 2011

У меня небольшие проблемы с разработкой приложения GWT. Я пытаюсь разработать приложение RIA (с одним основным виджетом, давайте назовем его Main). Во-первых, пользователь должен войти в систему. Вот мой способ сделать это, но у него есть проблема, вы увидите.

  1. Показать компоненты входа в систему на корневой панели
  2. Если вход был успешным (проверяет базу данных), показать основной виджет
  3. Виджет добавлен в корневую панель

Все работает, но когда вы нажимаете Обновить , он снова показывает компоненты входа ... Все это происходит в методе onModuleLoad.

Как мне изменить эту логику? Я бы хотел, чтобы пользователь вошел в систему (это означает, что RootPanel будет содержать основной виджет) в течение определенного периода времени.

Ответы [ 2 ]

3 голосов
/ 28 января 2011

http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ

Как запомнить логины

Наш логин В системе пока отсутствует полезная функция: На данный момент требуется, чтобы пользователи вошли в систему снова каждый раз.

Мы можем использовать Cookies, чтобы позволить пользователю веб-браузер, чтобы «запомнить» логин. В GWT, чтобы установить куки (который вы бы делать сразу после получения вашего кода GWT ответ, как мы делали в предыдущем фрагмент кода):

String sessionID = /*(Get sessionID from server's response to your login request.)*/;
final long DURATION = 1000 * 60 * 60 * 24 * 14; //duration remembering login. 2 weeks in this example.
Date expires = new Date(System.currentTimeMillis() + DURATION);
Cookies.setCookie("sid", sessionID, expires, null, "/", false);

Теперь вы можете запустить следующий код сразу после вашего! EntryPoint начинается выполнение:

String sessionID = Cookies.getCookie("sid");
if ( sessionID != null ) checkWithServerIfSessionIdIsStillLegal();
else displayLoginBox();

Помните - вы никогда не должны полагаться на sessionID отправлено на ваш сервер в куки заголовок; смотреть только на sessionID что ваше приложение GWT отправляет явно в полезная нагрузка сообщений на ваш сервер.

Я не уверен, как ваше приложение GWT реализовало связь со службой входа в систему, но если вы хотите увидеть другой пример, я последовал примеру здесь:

http://code.google.com/webtoolkit/doc/latest/tutorial/appengine.html#user

Хотя он использует Google App Engine в качестве внутренней службы аутентификации, я думаю, что он достаточно универсален для адаптации к любому серверу, который поддерживает серверную часть GWT RPC и имеет службы аутентификации.

1 голос
/ 28 января 2011

Для этого вам нужна какая-то поддержка на стороне сервера.

Например, когда пользователь входит в систему, отметьте его в сеансе на стороне сервера.В onModuleLoad() вызовите сервер, чтобы проверить, вошел ли пользователь в систему, прежде чем показывать форму входа.

Другие проблемы, связанные с нажатием кнопки Обновить, можно решить с помощью маркеров истории .

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