0

我正在为我的客户端应用程序使用 GWT。我没有为服务器使用 GWT/Java。但是,我不确定如何处理会话管理。GWT 应用程序驻留在一个页面上,所有服务器调用都通过 AJAX 完成。如果服务器上的会话过期......让我们假设用户没有关闭浏览器,但让应用程序保持打开状态,我的服务器如何通知应用程序会话已过期并且客户端部分应显示登录屏幕再次?

客户端会话管理是什么意思?这似乎天生就不安全。

我不是在寻找代码。我正在寻找想法、技术、潜在的解决方案等。我考虑过 Comet http://en.wikipedia.org/wiki/Comet_(programming),但如果不使用 Java,那似乎效果不佳在服务器端。也许我错了?我也不想轮询服务器。

有什么想法或见解吗?

4

3 回答 3

1

在不知道你的 RPC 是如何工作的情况下,很难给出好的建议。

如果您的 AJAX 服务需要对用户进行身份验证(IE 具有有效会话),则只需发送 401 错误说明用户无效即可。客户端可以将 401 错误解释为应设置用户进行重新身份验证的消息。

于 2008-12-01T22:40:19.747 回答
1

我们在我们的应用程序中处理了这个问题,通过检测服务器何时将重定向发送回登录屏幕(它将来自对 Ajax 调用的响应),并弹出一个对话框再次询问用户他们的密码,但预先填写他们的用户名。然后我们将它发布到登录页面所在的位置,就好像它是登录页面一样,因此用户自动登录到这个新会话。最后,我们只是再次重新提交了 ajax 调用,因此对用户来说这是一个无缝的过程(例如:他们不必再次单击该操作)。

由于我们将所有状态存储在客户端上,而不是在会话变量中,我们在尝试跨会话持久化数据时没有任何问题。

于 2008-12-01T23:59:12.660 回答
0

如果会话在服务器端过期会发生什么,那么下次客户端向服务器发送请求时,它将创建一个新会话,或者更有可能将一条消息发送回它正在尝试的客户端访问没有会话的页面,并将它们发送到登录屏幕。但是,您仍然需要等到客户端向服务器发送消息。

于 2008-12-01T21:46:55.920 回答