Security 使用javax.faces.STATE\u saving\u方法在客户端保存会话的含义

Security 使用javax.faces.STATE\u saving\u方法在客户端保存会话的含义,security,jsf,session,viewstate,jsf-2.2,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>

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

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

javax.faces.STATE_保存方法
客户
但我担心安全问题。

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

这只在客户端保存JSF视图状态。这是在JSF2.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>

jsf/ClientSideSecretKey
java.lang.String
[Base64格式的AES密钥]
您可以使用生成Base64格式的随机AES密钥

另见:
  • (阅读本文了解“会话”实际上是什么)

我认为有一个输入错误
jsf。ClientSideSecretKey
应该被
jsf/ClientSideSecretKey