Я пытаюсь понять, как зашифровать состояние просмотра с помощью JSF 1.2 и Mojarra. Странно то, что на некоторых серверах он по умолчанию зашифрован, а на других нет. Например, на моем локальном хосте я вижу следующее:
<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" />
Вы заметите два различия между этими двумя:
- Первый имеет autocomplete="off"
- В первом случае значение viewState зашифровано, а во втором нет.
Проблема в том, что я не могу понять, почему они разные. Кодовая база на моем локальном хосте такая же, как и на сервере. В моем web.xml не указаны параметры конфигурации, поэтому я предположил, что мой локальный хост не будет зашифрован (так как это значение по умолчанию, верно?).
Согласно документация Mojarra Я должен добавить:
<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
/JRE/lib
или/JRE/lib/ext
, чтобы исправить ошибки компиляции вjavac
или IDE (некоторые новички, которые вообще не понимают концепцию пути к классам, делают это). 27.02.2013