У меня jsps определен в нескольких каталогах с расширением jspx в каталоге страниц в веб-приложении. Либо мне нужно определить ограничение безопасности, либо все jsps перемещены в WEB-INF, чтобы заблокировать прямой доступ к jsps.
Параметры контекста
<context-param>
<param-name>facelets.VIEW_MAPPINGS</param-name>
<param-value>/faces/*; *.jspx</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jspx</param-value>
</context-param>
<servlet-mapping>
...
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Вариант 1 изменить веб. xml чтобы включить ограничение безопасности, как показано ниже:
<security-constraint>
<web-resource-collection>
<web-resource-name>no_access</web-resource-name>
<url-pattern>/faces/pages/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
В моем приложении много всплывающих окон windows, и я попал в белый список 90% из них. В любом случае, я все еще могу добиться доступа к всплывающему окну windows без белого списка jsps?
Вариант 2 - Переместить папку страниц в WEB-INF До сих пор я сделал следующее:
Перемещен jsp каталог в WEB-INF
Обновлен ниже configs
<context-param>
<param-name>facelets.VIEW_MAPPINGS</param-name>
<param-value>/faces/WEB-INF/*; *.jspx</param-value>
</context-param>
<servlet-mapping>
...
<url-pattern>/faces/WEB-INF/*</url-pattern>
</servlet-mapping>
Идентификаторы просмотра не были изменены.
<from-view-id>*</from-view-id>
<navigation-case>
<from-action>#{navigationController.processPage1}</from-action>
<from-outcome>page</from-outcome>
<to-view-id>/pages/common/base/page1.jspx</to-view-id>
</navigation-case>
<navigation-case>
<from-action>#{navigationController.processPage2}</from-action>
<from-outcome>page</from-outcome>
<to-view-id>/pages/somedir/page2.jspx</to-view-id>
</navigation-case>
Возможен ли вариант 2 при указанной выше настройке? В настоящее время нельзя использовать более новые версии.
Какой должен быть путь jspx, который мне нужно использовать в requestdispacher.forward
В настоящее время он выглядит следующим образом:
RequestDispatcher rd=request.getRequestDispatcher("/faces/pages/common/base/page1.jspx");
rd.forward(request, response);
Я попытался обновить указанное выше до
RequestDispatcher rd=request.getRequestDispatcher("/faces/WEB-INF/pages/common/base/page1.jspx");
rd.forward(request, response);
При этом я получаю исключение Viewexpired
Как мне получить доступ к jsp в jsp в этой настройке? В настоящее время jsp имеет window.open, как показано ниже
window.open('/Webapp/faces/pages/common/base/page1.jspx')
Я бы обновил его до ниже
window.open('/Webapp/faces/WEB_INF/pages/common/base/page1.jspx')
Если это может быть достигнуто с текущей средой и некоторыми изменения конфигурации / кода, сообщите.