我想弄清楚如何使用JSF 1.2和Mojarra来加密视图状态。奇怪的是,它似乎在某些服务器上被默认加密,而在其他服务器上则没有。举例来说,在我的本地我看到以下内容:在Mojarra的JSF 1.2中配置JSF视图状态加密
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-40233784603124937:-3413182513789758151" autocomplete="off" />
但我们的测试环境中的服务器上获取:
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id4:j_id5" />
你会发现这两个之间有两点不同:
- 第一个具有自动完成=“关”
- 第一个viewState值已加密,而第二个没有
问题是,我无法弄清楚为什么两者不同,我的生活。代码库在我的本地主机上与在服务器上相同。在我的web.xml中没有指定配置选项,所以我会假定我的localhost不会被加密(因为这是默认的,对吗?)。
每the Mojarra documentation我要补充:
<env-entry>
<env-entry-name>com.sun.faces.ClientStateSavingPassword</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>[SOME VALUE]</env-entry-value>
</env-entry>
,但似乎对于客户端状态保存,而不是服务器端状态保存是特别。除非我误解的东西,我使用的服务器端状态保存(至少,我找不到任何地方我们已经配置javax.faces.STATE_SAVING_METHOD
所以,我的问题:
- 我的配置为什么会是本地主机和服务器之间有什么不同?有没有别的地方可以选择比web.xml中规定的其他?
- 如何我们所有的服务器上做我启用ViewState的加密(如在我的本地)?
配置:
- 的Jboss 5.1.0.GA
- 钻嘴鱼科1.2_12-B01-FCS
- 煤层2.2.0.GA
谢谢,我将在服务器上挖掘Mojarra版本。我从jboss配置文件中取出1.2_12,但也许我们有一些压倒一切的东西。稍后会报告。 – 2013-02-27 14:27:38
另一个可能的原因是脏类路径。例如。已将JSF库放在'/ JRE/lib'或'/ JRE/lib/ext'中,以便修复'javac'或IDE中的编译错误(一些根本不理解“classpath”概念的开始者会这样做) 。 – BalusC 2013-02-27 14:29:13
你是对的。似乎在某个时候有人更新了我们的开发环境中分发的Mojarra jar。那是在1.2_14,而我们的其他环境在1.2_12。这解释了这个问题。我假设视图状态ID算法实际上被反向移植到1.2_14,而不是1.2_15。谢谢您的帮助! – 2013-02-27 15:05:27