ограничение безопасности и файл приветствия - PullRequest
4 голосов
/ 25 февраля 2011

В моем web.xml я использую что-то вроде этого:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Block all</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint />
</security-constraint>

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Allow facelets</web-resource-name>
    <url-pattern>/faces/*</url-pattern>
    <http-method>POST</http-method>
    <http-method>GET</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>*</role-name>
  </auth-constraint>
</security-constraint>

Все входящие запросы блокируются, кроме тех, которые начинаются с / Faces /.Я делаю это потому, что в противном случае неавторизованные пользователи могут получить доступ к исходным файлам Facelets.

Работает нормально, но не показывает файл приветствия, потому что даже корневой путь заблокирован.Я пытался добавить <url-pattern>/</url-pattern> ко второму ограничению безопасности, но ничего.

Ответы [ 2 ]

1 голос
/ 05 марта 2011

Если вы можете, вместо этого сопоставьте FacesServlet в шаблоне суффикса. Когда вы все еще используете JSF 1.x, отобразите его на *.jsf. Тогда вы можете просто заблокировать доступ на *.xhtml с этим ограничением безопасности. Если вы уже используете JSF 2.0 (история ваших вопросов это подтверждает), просто сопоставьте его с *.xhtml. В отличие от JSF 1.x, FacesServlet не будет работать с бесконечным циклом. Таким образом, вам не нужно никаких ограничений безопасности. Единственным недостатком является то, что вы не сможете обслуживать «простые ванильные» XHTML-файлы без участия FacesServlet. Но в любом случае это не имеет никакого смысла, в любом случае, такой файл должен быть обработан как *.html.

PS: Спасибо, что предоставили еще одну причину, по которой шаблон префикса /faces/* отстой;)

0 голосов
/ 22 мая 2012

Работает нормально, но не показывает файл приветствия, потому что даже корневой путь заблокирован.Я пытался добавить / ко второму ограничению безопасности, но ничего.

В этом случае это должно было сработать.Я проверил его на своей машине, он не работает с первого раза.пока мы не перезапустим сервер приложений.тогда он ведет себя как ожидалось.

...