基于表单的auth问题并在会话超时后请求静态资源

时间:2014-10-30 09:53:40

标签: gwt j-security-check

我们在GWT应用程序中使用基于表单的身份验证,目前我正在努力解决会话超时问题。

如果用户已登录并执行将在会话超时后触发静态资源请求的操作,则会显示登录页面,当用户再次登录时,则仅显示图像资源给用户。例如,如果用户将鼠标悬停在按钮上,则该按钮需要获取鼠标悬停时显示的图标。

这是合乎逻辑的,因为登录页面是由图像请求触发的,但实际上并不是我们想要的行为。将用户重定向到他所在的页面或者另一个页面会更好。

如何以更好的方式处理?据我了解,更改重定向网址非常困难,j_security_check在成功登录后用于重定向用户。

1 个答案:

答案 0 :(得分:0)

我解决它的方法是仅使用<security-constraint>保护HTML 主页。静态资源(图像,样式表,GWT脚本)根本不受保护,并且AJAX端点(GWT-RPC,RequestFactoryServlet或使用来自应用程序的AJAX调用的其他端点)仅检查用户Principal是否存在请求(这可以在servlet过滤器或RequestFactory ServiceLayerDecorator中完成),否则返回错误(但不要触发登录页面)。

您可以看到示例web.xml here,其中包含处理RequestFactory here中安全性的代码(以及处理客户端here响应的代码)。对于GWT-RPC,您可能需要使用servlet过滤器和自定义RpcRequestBuilder或基本AsyncCallback<?>实现。