使用javax.faces.STATE_SAVING_METHOD在客户端上保存会话的含义

时间:2015-04-02 18:43:01

标签: security jsf session viewstate jsf-2.2

我的第一个JSF页面正在抛出javax.faces.application.ViewExpiredException。当我搜索时,我得到了解决我问题的解决方案。

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>

但我担心安全隐患。

1 个答案:

答案 0 :(得分:5)

这根本不会在客户端保存“会话”。

这只保存客户端的JSF视图状态。这是在JSF 2.2中始终使用在应用程序启动时生成的密钥进行AES加密。但是,一旦重新启动应用程序,此操作就会失效,从而导致所有现有视图状态变为无效。您可以在web.xml中指定固定密钥,以便所有现有视图状态在服务器重新启动时保持有效:

<env-entry>
    <env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>[AES key in Base64 format]</env-entry-value>
</env-entry>

您可以使用this page生成Base64格式的随机AES密钥。

另见: