我们在weblogic 10.3.7中部署的应用程序中有JSF2.1.7,我们有默认的 state_saving_method to server 。
我们的安全可以成功执行以下测试..
Session 1
1) Access the login page
2) Post the login request with successful login.
3) record the login form values along with ViewStateId.
Session 2
1) Access the login page
2) Post the login request with form values including view state id from session 1.
3) successful login (but expected view expired as it is different session).
Viewstate id只能在一个会话中使用,证明服务器状态保存方法不正确。
但是它不是存储在服务器中的会话ID的视图状态吗? ,我们的设置中有没有丢失?
由于
答案 0 :(得分:0)
我说这是按设计工作的。 javax.faces.ViewState
(在SERVER
状态保存模式的情况下)对象旨在保留在会话中查看的页面的条件,并使用viewStateId
作为键映射到服务器端的对象。根据JSF实现,每个会话可以保存固定数量的视图状态对象。如果客户端尝试回发viewStateId
无法与StateManager
中的密钥匹配或在给定会话的任何位置找到的密钥,JSF将假定密钥可能在某个时刻出现并且只是已过期,因此ViewStateExpiredException