首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Spring Security中重定向在会话超时时处理PrimeFaces Ajax请求

在Spring Security中重定向在会话超时时处理PrimeFaces Ajax请求
EN

Stack Overflow用户
提问于 2013-05-31 13:06:16
回答 1查看 9.8K关注 0票数 4

我正在尝试让JSF web前端在会话超时时重定向回登录页面(在Spring Security中)。

我尝试过使用元刷新方法,但是这会导致一个不受欢迎的副作用,即当页面上只使用AJAX控件时,元刷新时间将不会更新。这意味着页面可能会在您仍在使用时刷新,因为您没有转换到另一个页面,而只是对服务器进行了AJAX调用。我还没有找到一种使用Primefaces轻松改变这种行为的方法。

当会话过期时,Spring Security会向Primefaces返回一个302 HTTP错误消息,但是Primefaces会忽略重定向请求。您可以判断会话何时过期,因为Primefaces控件停止响应,因为它们的AJAX调用不成功。

我使用的是在Glassfish 3.1.2.2上运行的Primefaces 3.4.2和Spring Security 3.1.4。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-04 08:35:16

这是Spring Security将重定向发送回客户端的默认方式的一个问题。向客户端发送重定向的默认方法是发送302临时移动的响应的HTML方法,但是这不适用于AJAX客户端。AJAX客户端会将其解释为重定向到新位置以发布/获取数据,而不是页面重定向。让AJAX客户机用与普通HTML请求相同的方式将浏览器重定向到新页面的正确方法是:

代码语言:javascript
运行
AI代码解释
复制
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<partial-response>
  <redirect url="http://your.url.here/"></redirect>
</partial-response>

要覆盖Spring Security使用的默认无效会话策略,您需要在Spring配置中创建一个SessionManagementFilter bean,并将实现InvalidSessionStrategy的类传递给它,并在通过HTML或AJAX收到请求时发送正确的重定向响应:

代码语言:javascript
运行
AI代码解释
复制
<bean id="sessionManagementFilter" class="org.springframework.security.web.session.SessionManagementFilter">
  <constructor-arg name="securityContextRepository" ref="httpSessionSecurityContextRepository" />
  <property name="invalidSessionStrategy">
    <bean class="yourpackage.JsfRedirectStrategy">
       <constructor-arg name="invalidSessionUrl" value="/your_session_expired_page.xhtml" />
    </bean>
  </property>
</bean>
<bean id="httpSessionSecurityContextRepository" class="org.springframework.security.web.context.HttpSessionSecurityContextRepository"/>

然后,您需要将此过滤器添加到Spring Security HTTP块:

代码语言:javascript
运行
AI代码解释
复制
<security:http use-expressions="true">
    <security:custom-filter ref="sessionManagementFilter" before="SESSION_MANAGEMENT_FILTER" />
    ...
</security:http>

现在将在应用程序启动时创建自定义会话管理筛选器,并且只要发现过期会话,就会执行所提供的无效会话策略类。

有关如何实现无效会话策略的一个很好的示例可以在这里找到:https://gist.github.com/banterCZ/5160269

在这里可以找到一个使用IceFaces的类似问题:JSF 2, Spring Security 3.x and Richfaces 4 redirect to login page on session time out for ajax requests

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

https://stackoverflow.com/questions/16858017

复制
相关文章
在 JS 中如何使用 Ajax 来进行请求
github 地址:https://github.com/qq44924588...
前端小智@大迁世界
2020/12/07
9.1K0
Spring Security 在 Spring Boot 中的使用【集中式】
  创建好一个空的 Spring Boot 项目之后,写一个 controller 验证此时是可以直接访问到该控制器的。
Demo_Null
2020/10/28
2.5K0
Spring Security 在 Spring Boot 中的使用【集中式】
Spring Security 入门(五):在 Spring-Boot中的应用
前言 本文作为入门级的DEMO,完全按照官网实例演示; 项目目录结构 Maven 依赖 <parent> <groupId>org.springframework.boot</groupId>
程序猿DD
2018/03/26
1.5K0
Spring Security 入门(五):在 Spring-Boot中的应用
【Kotlin Spring Boot 服务端开发: 问题集锦】 Spring Security : 自定义AccessDeniedHandler 处理 Ajax 请求
【Kotlin Spring Boot 服务端开发: 问题集锦】 Spring Security : 自定义AccessDeniedHandler 处理 Ajax 请求
一个会写诗的程序员
2018/08/17
1.5K0
Spring security 拦截请求
比如说在未登录淘宝时,我们可以访问淘宝的首页,可是在访问购物车时就会跳出登录权限。
Tim在路上
2020/08/04
2.3K0
Spring Security入门到实践(一)HTTP Basic在Spring Security中的应用原理浅析
上面的两点是应用安全的基本关注点,Spring Security存在的意义就是帮助开发者更加便捷地实现了应用的认证和授权能力。
itlemon
2020/04/03
2K0
Spring Security入门到实践(一)HTTP Basic在Spring Security中的应用原理浅析
Spring Security 在 Servlet 的作用区域
Spring Security 使用标准的 Servlet 过滤器(Filter) 并与 Servlet 容器集成。 这个意味着 Spring Security 可以在任何运行运行在 Servlet 容器(Servlet Container)中的应用上使用。 更具体地说,你可以不使用 Spring,而是基于 Servlet 的应用程序中使用 Spring Security。
HoneyMoose
2022/09/30
3180
Spring Security 在 Servlet 的作用区域
spring security ajax登录及返回
本文讲述一下如何自定义spring security的登录页,网上给的资料大多过时,而且是基于后端模板技术的,讲的不是太清晰,本文给出一个采用ajax的登录及返回的前后端分离方式。
code4it
2018/09/17
2.3K0
在Spring Security 5中如何使用默认的Password Encoder
在Spring Security 4中,可以使用in-memory认证模式直接将密码以纯文本的形式存储。
烟雨平生
2023/03/07
1.5K0
在Spring Security 5中如何使用默认的Password Encoder
SpringMVC:SpringMVC处理Ajax请求
@RequestBody可以获取请求体信息,使用@RequestBody注解标识控制器方法的形参,当前请求的请求体就会为当前注解所标识的形参赋值
愷龍
2023/02/27
9500
在spring boot中使用spring security防止CSRF攻击
在一个spring boot项目中,需要防止CSRF攻击,可以只把spring security中的相关filter引入来进行. 在pom中添加相关依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </depen
大神带我来搬砖
2018/05/02
5.8K0
在Spring Boot中使用Spring Security实现权限控制
https://gitee.com/a247292980/spring-security
ydymz
2018/09/10
9370
在Spring Boot中使用Spring Security实现权限控制
spring security设置login的ajax返回
序 本文介绍下如何处理security的login的ajax返回 自定义AuthenticationEntryPoint public class UnauthorizedEntryPoint implements AuthenticationEntryPoint { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException
code4it
2018/09/17
7700
JS中如何处理多个ajax并发请求?
通常 为了减少页面加载时间,先把核心内容显示处理,页面加载完成后再发送ajax请求获取其他数据 这时就可能产生多个ajax请求,为了用户体验,最好是发送并行请求,这就产生了并发问题,应该如何处理? (1)并行改串行 如果业务逻辑和用户体验允许的情况下,可以改为串行,处理起来最简单 function async1(){ //do sth... async2(); } function async2(){ //do sth... } async1(); (2)回调计数 function
dys
2018/04/02
5.5K0
在 ASP.NET Core Web API 中处理 Patch 请求
在 ASP.NET Core Web API 中,由于 C# 是一种静态语言(dynamic 在此不表),当我们定义了一个类型用于接收 HTTP Patch 请求参数的时候,在 Action 中无法直接从实例中得知客户端提供了哪些参数。
郑子铭
2023/08/29
2700
在 ASP.NET Core Web API 中处理 Patch 请求
Django 2.1.7 处理ajax请求、GET、POST请求
在业务处理的工作中,在同一个视图处理上,可能会有普通的GET、POST请求,还会有ajax请求。 那么怎么在处理这些请求的时候做上区分呢?
Devops海洋的渔夫
2019/09/18
1.5K0
Django 2.1.7 处理ajax请求、GET、POST请求
如何ASP.NET Core Razor中处理Ajax请求
在ASP.NET Core Razor(以下简称Razor)刚出来的时候,看了一下官方的文档,一直没怎么用过。今天闲来无事,准备用Rozor做个项目熟练下,结果写第一个页面就卡住了。。折腾半天才搞好,下面给大家分享下解决方案。 先来给大家简单介绍下Razor Razor Pages是ASP.NET Core的一项新功能,可以使编页面的编程方案更简单,更高效。Razor页面使用处理程序方法来处理传入的HTTP请求(GET / POST / PUT / Delete)。这些类似于ASP.NET MVC或WEB
企鹅号小编
2018/02/05
1.9K0
Spring Security 在 Spring Boot 中集成 JWT + RSA【分布式】
  分布式认证就是我们常说的单点登录(SSO),即用户只需要登录一次就可以访问所有互相信任的子系统。在每台服务中都有一个 session 但是各个 session 之间时无法共享资源的,所以 session 不能作为单点登录的解决方案。单点登录一般分为两个部分:  ♞ 用户认证:这一环节主要是用户向认证服务发起认证请求,认证服务给用户返回一个成功的令牌 token,主要在认证服务中完成,注意认证服务只能有一个。  ♞ 身份校验:这一环节是用户携带 token 去访问其他服务时,在其他服务中要对 token 的真伪进行检验,主要在资源服务中完成,资源服务可以有很多个。
Demo_Null
2020/10/28
3.1K0
Spring Security 在 Spring Boot 中集成 JWT + RSA【分布式】
spring security filter获取请求的urlpattern
本文主要讲一下如何在spring security filter里头获取请求的HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE
code4it
2018/09/17
1.5K0
点击加载更多

相似问题

Spring Security4和PrimeFaces 5 AJAX请求处理

11

使用spring security在会话超时时注销CAS

12

Spring Security & ExtJS -会话超时时重定向到登录页面

11

JSF 2、Spring Security 3.x和Richfaces 4在ajax请求的会话超时时重定向到登录页面

21

Spring Security会话超时时间太短

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文