我面临着类似的问题,如JSF force URL rewriting 希望避免跨应用程序的会话共享
- 旧系统 - 环境:JSF 1.2、jsf-api-2.1.0-b03、jsf-facelets-1.1.14、jsf-impl-1.2
我在 websphere 7 上部署了两个独立的应用程序服务器,使用标准 LDAP 注册表使用基于表单的身份验证。
- Server1 webapp (ear):- 使用 JSP 创建 - 基于表单的身份验证。
- Server2 webapp (ear):- 使用 JSF 创建
面孔-config.xml
<managed-bean>
<managed-bean-name>Login</managed-bean-name>
<managed-bean-class>
com.abc.ui.mbean.session.LoginMBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>DeviceType</managed-bean-name>
<managed-bean-class>com.abc.nsam.jsfmanager.jsf.mbean.stateful.DeviceTypeMBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>contextMBean</property-name> "This is of session scope"
<value>#{Context}</value>
</managed-property>
</managed-bean>
当我登录到 server1 并执行一些操作,然后在 IE 上打开新选项卡并键入 server2 的 URL 时,它会自动登录(因为它们共享相同的本地用户名)并执行一些操作,然后返回到 server1 选项卡..它抛出 ViewExpiredException并让我退出并再次返回登录页面。登录后,当我返回 server2 选项卡并单击任何链接时,它会将我注销。
所以看起来 jsessionId 被 2 个不同的选项卡(两个不同的应用程序服务器实例)覆盖。
根据这个问题的答案:你会推荐我同样的 - 正确管理范围吗?但在我的情况下似乎是请求范围并登录其会话范围.....我应该去重写 URL 吗?(使用漂亮的 URL 重写?) ....请帮助...谢谢。