我正在构建一个GWT应用程序,其中我有3个RootPanel,其中一个包含登录面板(userId和Password)。我的应用程序是一个单页应用程序。为了登录,用户的id和密码通过RPC从服务器变化,如果组合正确,则下一个Panel加载哪个是我的主应用程序。由于它是一个单页面应用程序,我想知道如何在此应用程序中执行会话管理。
答案 0 :(得分:0)
我在不同的GWT应用程序中使用的方法很少
Thread Local
(首选方式) getThreadLocalRequest().getSession().setAttribute("user", user);
//and get
not secured, dependent
)答案 1 :(得分:0)
您可以在应用程序web.xml中配置会话,并且可以编写会话过滤器,该过滤器将过滤对服务器的所有或特定请求,您可以在其中验证会话是否过期或有效。如果它已过期,您可以将用户重定向到您想要的任何页面。
答案 2 :(得分:0)
AJAX应用程序的一大优势是无需在服务器端进行会话即可工作。据我所知,Ray Ryan在Google I / O演示文稿中提到了无状态服务"构建GWT应用程序的最佳实践"在Google I / O 2009上。
在服务器端进行会话会产生一些影响:
即使您在服务器端进行了会话管理,也必须在每次服务器调用时检查用户凭据!您永远无法确定,您的应用程序始终是您的服务!
因此,我个人避免在我的GWT应用程序中使用服务器端的会话管理。
相反,你可以这样做:
在登录后,将一些信息(如userid,登录时间,IP地址等)存储在数据库表中。使用记录的密钥,对其进行加密并将此令牌发送回客户端。服务器端的所有服务都应该使用userId和token作为输入参数。在开始执行业务逻辑之前,应检查用户凭据。解密令牌并从数据库表中读取记录。
等等。
此外,您应始终使用SSL!