GWTP Gatekeeper和UserService

时间:2011-05-30 07:20:02

标签: gwt gwt-platform

使用GWTP的Gatekeeper功能时遇到问题。 在示例gwtp-sample-tab之后,我创建了客户端代码。但现在我仍然想知道如果用户已成功登录,如何通知客户端? (我正在使用Google UserService。)

有人可以给我一个小例子吗?

非常感谢!

1 个答案:

答案 0 :(得分:7)

不确定我是否正确理解了您的问题,因为GWTP网守是为了安全目的而存在(阻止来自其他用户的管理页面或类似的东西)。使用@UseGatekeeper( LoggedInGatekeeper.class )和gwtp注释演示者只会向注册用户显示所有其他人将被重定向到主页/错误页面。

无论如何,如果您的网站使用GAE用户API(用户服务),则用户必须转到Google的登录页面进行授权,然后返回您的网站。您网站的页面将被完全刷新,因此使用this technique and 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