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

Pau*_*llo 3 security viewstate session jsf 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>
Run Code Online (Sandbox Code Playgroud)

但我担心安全隐患.

Bal*_*usC 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>
Run Code Online (Sandbox Code Playgroud)

您可以使用此页面生成Base64格式的随机AES密钥.

也可以看看: