Как перенаправить на страницу входа в систему во время ожидания сеанса в Tomcat 7, используя JSF 2, Primefaces и Spring Security - PullRequest
2 голосов
/ 26 января 2012

Когда время ожидания сеанса и клиент выполняет частичную визуализацию Ajax, Spring Security перенаправляет на страницу входа в систему, но перенаправление перехватывается HttpXMLRequest, и ничего не происходит, как ожидалось, но не желательно.

Spring config:

<sec:session-management invalid-session-url="/page/start.jsf">
    <sec:concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/>
</sec:session-management>

Firebug показывает связь Ajax: enter image description here

1 Ответ

2 голосов
/ 26 января 2012

Чтобы перенаправить запрос jsf ajax, вам нужен xml следующим образом

<?xml version="1.0" encoding="UTF-8"?>   
<partial-response>  
      <redirect url="XXX">  
      </redirect>  
</partial-response>

Здесь XXX - это URL, по которому вы хотите перенаправить.

При переадресации вызова ajax, отправленной Spring Security, не так, как указано выше, следовательно, нет перенаправления или ожидаемого результата.

Чтобы получить желаемый результат, установите фильтр для всех запросов jsf, ожидайте страницу входа в систему и проверьте, является ли сеанс действительным, и если это действительно вызов jsf ajax путем проверки заголовка «Faces-Request», его значение должно быть «частичное / ajax». Если сеанс истек и является ajax-запросом, отправьте выше xml в качестве ответа.

Это должно работать.

Эта ссылка @ SO может помочь вам с кодом безопасности пружины, если фильтр не нужен.

...