Я разрабатываю веб-приложение (jsf 2.0 + facelets + richfaces 3.3.3 + oracle 10g + tomcat 6.0.26)
в моем приложении есть 1 путь, который не защищен, а другие защищены (web.xml):
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/faces/login.jsp</form-login-page>
<form-error-page>/faces/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin_Resource</web-resource-name>
<description/>
<url-pattern>/faces/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>A</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role>
<description>Role admin</description>
<role-name>A</role-name>
</security-role>
Итак, этот путь не защищен: / face / client / *.
когда я перехожу из https tp http, я использую эту функцию:
FacesContext.getCurrentInstance().getExternalContext().redirect("http://url/faces/client/page.xhtml");
Когда я развернул свое приложение и использовал этот URL: http (s): // url / MyContext / Face / ..., все работало нормально.
Но когда я переместил свое приложение в контекст ROOT, поэтому я использую этот URL: http (s): // url / Faces /, мой сеанс https теряется при переходе с https на http, а затем обратно на https. Появляется моя страница входа в систему, поэтому мне нужно заново ввести логин и пароль.
Почему мой сеанс потерян? Что-то не так?
Добавить: при развертывании приложения вот что я делаю (внешний сервер):
положить мой военный файл в папку webapp
запустите мой сервер (который распакует мою войну в папки, ...), затем остановите его
я удаляю свой военный файл
я заменяю содержимое папки ROOT содержимым распакованного файла войны
и перезапустите мой сервер снова
но все работает нормально, когда я помещаю войну в папку webapp, затем запускаю сервер (и все).
Итак, я думаю, что это проблема контекста.
У вас есть идеи?