当会话超时并且客户端执行Ajax部分呈现时,Spring Security会重定向到logOn页面,但是重定向会被HttpXMLRequest捕获,并且什么都不会发生,这是预期的,但不是我们所希望的。
Spring配置:
<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通信:

发布于 2012-01-27 00:27:24
要重定向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 ",其值应为"partial/ajax“。如果会话已过期并且是ajax请求,则将上面的xml作为响应发送。
应该能行得通。
如果不需要过滤器,这个link @ SO可能会帮助你编写spring安全代码。
https://stackoverflow.com/questions/9018322
复制相似问题