繁体   English   中英

是否在服务器上不使用Java的情况下在GWT中进行会话管理?

[英]Session management in GWT without using Java on the server?

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

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

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

有什么想法或见识吗?

不知道您的RPC如何工作,很难给出好的建议。

如果您的AJAX服务要求对用户进行身份验证(即IE拥有有效的会话),则可以仅发送401错误(表明该用户无效),这是可以的。 客户端可以将401错误解释为一条消息,提示它应将用户设置为重新认证。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM