首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Tomcat7中使用JSF2、Primefaces和Spring Security在会话超时时重定向到登录页面

如何在Tomcat7中使用JSF2、Primefaces和Spring Security在会话超时时重定向到登录页面
EN

Stack Overflow用户
提问于 2012-01-26 20:48:50
回答 1查看 2.5K关注 0票数 2

当会话超时并且客户端执行Ajax部分呈现时,Spring Security会重定向到logOn页面,但是重定向会被HttpXMLRequest捕获,并且什么都不会发生,这是预期的,但不是我们所希望的。

Spring配置:

代码语言:javascript
复制
<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通信:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-27 00:27:24

要重定向jsf ajax请求,需要使用xml,如下所示

代码语言:javascript
复制
<?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安全代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9018322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档