GWTP Gatekeeper и UserService - PullRequest
       16

GWTP Gatekeeper и UserService

4 голосов
/ 30 мая 2011

У меня проблема с использованием функции Gatekeeper GWTP.Следуя примеру gwtp-sample-tab , я создал код клиента.Но теперь я все еще задаюсь вопросом, как уведомить клиентскую сторону, если пользователь успешно вошел в систему?(Я использую Google UserService.)

Может кто-нибудь дать мне небольшой пример?

Большое спасибо!

1 Ответ

7 голосов
/ 05 июня 2011

Не уверен, правильно ли я понимаю ваш вопрос, потому что гейткиперы GWTP существуют только в целях безопасности (блокировка страниц администратора от других пользователей или что-то подобное).Аннотируйте докладчиков с помощью @UseGatekeeper( LoggedInGatekeeper.class ), и gwtp позволит показывать это только зарегистрированным пользователям, все остальные будут перенаправлены на страницу home / error.

В любом случае, если ваш сайт использует API пользователей GAE (userservice), пользователям придется перейти на страницу входа в Google для авторизации, а затем вернуться на свой сайт.Страница вашего сайта будет полностью обновлена, поэтому, используя эту технику и jsp , вы можете сохранить информацию о пользователе прямо на хост-страницу jsp.

Затем в методе основного докладчика onReset() получите эти данные, используя класс Dictionary или JSNI, и сделайте что-то вроде этого:

email = JSNIUtils.getEmail(); 
  // or
  // Dictionary info = Dictionary.getDictionary("info");
  // String email = info.get("email");
loginUrl = JSNIUtils.getLogInUrl();
logoutUrl = JSNIUtils.getLogOutUrl();

if (email != null && logoutUrl != null) {
      // user logged in -> show his email & log out link
    getView().getUserNameAnchor().setText(email);
    getView().getLogInOutAnchor().setText("Log out");
    getView().getLogInOutAnchor().setHref(logoutUrl);
} else if (loginUrl != null) {  
      // unknown user -> show welcome & log in link
    getView().getUserNameAnchor().setText("Hello Stranger");
    getView().getLogInOutAnchor().setText("Log in");
    getView().getLogInOutAnchor().setHref(loginUrl);
} // something else 
...