4

У меня есть эта странная проблема с AJAX перенаправлять на ограничения безопасности:<частичного ответа> XML отображается как простой текст после AJAX перенаправлять на ограничения безопасности в WildFly

Когда Аякса вызов производится (нажав на сортируемый столбец p:dataTable или когда триггеры p:poll) на странице с защитой роли после окончания сеанса, на экране отображается <partial-response><redirect-url=... XML от OmniFaces.

Когда я удаляю OmniFaces, вызовы ajax, похоже, терпят неудачу, и я не получаю отображаемый XML.

Security настроен следующим образом в web.xml:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Pages</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>user</role-name> 
    </auth-constraint> 
</security-constraint> 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Resources</web-resource-name> 
     <url-pattern>/javax.faces.resource/*</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>myRealm</realm-name> 
    <form-login-config> 
     <form-login-page>/login.xhtml</form-login-page> 
     <form-error-page>/login.xhtml?error=true</form-error-page> 
    </form-login-config> 
</login-config> 

<security-role> 
    <role-name>user</role-name> 
</security-role> 
+1

Чтобы исключить одно и другое, что, если вы сохраняете шаблон URL '* .xhtml' и не указываете шаблон URL/javax.faces.resource/*' и 'UnmappedResourceHandler'? – BalusC

+0

По-прежнему возникла проблема после удаления '/ javax.faces.resource/*' и 'UnmappedResourceHandler' –

+1

ОК, не связанная с' UnmappedResourceHandler'. Я рекомендую пересмотреть свой вопрос на основе новых результатов. Какая структура проверки подлинности и какой сервер вы используете? – BalusC

ответ

5

я воспроизводил его. Это странная причуда/ошибка в самом WildFly.

Что здесь происходит?

По умолчанию без OmniFaces, когда запрос запущен на ограниченной странице во время истекшего сеанса, сервер по умолчанию возвращает всю HTML-страницу, идентифицированную <form-login-page> как ответ, независимо от источника запроса. Это, очевидно, не выполняется с помощью JSF-запросов ajax, поскольку JavaScript, ответственный за обработку запросов ajax, не мог обрабатывать всю HTML-страницу в качестве ответа, где ожидал специальный XML-ответ. Пользователь не имеет обратной связи. Это с тех пор, как OmniFaces 1.2 зафиксировал в своем OmniPartialViewContext, вызванном этим связанным вопросом: ViewExpiredException not thrown on ajax request if JSF page is protected by j_security_check.

С OmniFaces возвращается специальный ответ JAF ajax с перенаправлением в виде <partial-response><redirect url="originalURL"> вместо всей страницы входа в систему, а ограничение безопасности запускается еще раз, но на этот раз с реальным синхронным запросом вместо запроса ajax JSF. Когда сервер вернет весь <form-login-page>, все будет хорошо.

WildFly (проверено только 10.0.0 на данный момент), однако, похоже, кэширует весь ответ <form-login-page> первого ограничения безопасности в сеансе (тогда как ожидается, что он будет кэшировать только связанный запрос) и возвращает именно это ответ на каждый удар ограниченного запроса. Вот почему вы каждый раз видите исходный ответ <partial-response> XML.

В соответствии с this commit Я обошел его, явно отменив сеанс еще раз, прежде чем генерировать перенаправление ajax в OmniPartialViewContext. Исправление доступно в OmniFaces 2.3.

+0

Я не мог воспроизвести проблему '* .jsf' /' * .xhtml', когда я тестировал свой браузер в режиме инкогнито/приватный. Таким образом, это может быть какой-то проблемой кэширования на моей стороне. –

+0

Он также работает с WildFly 8.2.0. Если запрос Ajax выполняется после таймаута сеанса, отображается . Является ли OmniFaces 2.3-SNAPSHOT для Jsf 2.3? Когда будет официальная версия для использования с этим Bugfix? – Tony

+0

Нет, OmniFaces 2.x все еще для JSF 2.2. Только OmniFaces 3.x будет для JSF 2.3. На этой неделе я ожидаю выпуск OmniFaces 2.3 RC1 (самая важная часть, , наконец, так же хороша, как закончена) – BalusC