0

我正在编写一个 EAI(外部身份验证接口)解决方案,为某些应用程序提供登录/注销页面

我们目前有一个 F5 负载平衡器,它位于两个 WebSEAL 6.1 反向代理前面,然后平衡在 WebSphere Application Server 8.0.0.10 上运行的两个应用程序之间的请求

登录页面由 JSF 2.0.6 应用程序提供,并使用客户端状态保存,因此我们没有会话超时

这些页面还使用请求范围的 bean,以尽可能接近无状态,因为我不能使用 JSF 2.2 来使用真正的无状态标志

我们发现了以下场景的问题,并且正在努力提出解决方案

  1. 客户在浏览器中进入登录页面。WebSEAL 将它们发送到 WebSphere 服务器之一
  2. 然后客户提交表单,但 WebSEAL 将新请求发送到不同的 WebSphere 服务器
  3. 客户遇到错误但被重定向到空白登录页面

我们正在使用 OmniFaces FullAjaxExceptionHandler 来捕获在步骤 2 中生成的 View Expired 错误

我们还能够通过强制 WebSEAL 重定向两个 WebSphere 服务器之间的流量并模拟场景来重新创建错误

这个问题似乎是因为来自一个 WebSphere 服务器的视图状态与另一个 WebSphere 服务器不兼容,这是有道理的

出于我们的目的,我们只需要提交的表单详细信息来登录用户,我们这边不需要视图状态

有没有办法让一台服务器的客户端视图状态兼容或与另一台服务器一起工作?

对此问题的任何帮助将不胜感激。

4

1 回答 1

1

我不确定是否可以回答我自己的问题,但我确实找到了适合我们的解决方案。

我们使用 OmniFaces enableRestorableView 标签在这些情况下损坏/丢失视图时重建视图。

http://showcase.omnifaces.org/taghandlers/enableRestorableView

在我们强制中断和篡改页面中的视图状态的两个测试用例中,标签允许我们的应用程序使用表单参数继续

于 2016-02-21T21:15:57.830 回答