首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java.lang.IllegalStateException: getAttributeNames: Session在Spring安全HttpSessionDestroyedEvent中已经失效

是一个Java异常,表示在Spring安全的HttpSessionDestroyedEvent事件中,尝试调用getAttributeNames方法时发生了非法状态异常,即会话已失效。

在Spring框架中,HttpSessionDestroyedEvent是一个事件,用于通知应用程序会话已经被销毁。当会话失效时,可能会尝试访问已经失效的会话,导致该异常的抛出。

解决这个异常的方法是确保在会话失效之前不再尝试访问会话对象。可以通过以下方式来避免这个异常:

  1. 在代码中使用合适的会话管理机制,确保会话在需要时有效,并在不再需要时及时销毁。
  2. 在使用会话对象之前,先检查会话是否有效,可以使用isValid()方法进行检查。
  3. 在会话失效后,避免再次访问会话对象的属性或方法。

关于Spring安全的HttpSessionDestroyedEvent事件,它是Spring Security框架中的一个事件,用于在会话失效时触发相应的处理逻辑。可以通过监听该事件来执行一些清理操作,例如清除用户的认证信息或权限信息等。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【SpringSecurity系列(十三)】只允许一台设备在线

【SpringSecurity系列(九)】降低 RememberMe 的安全风险 微服务项目中,Spring Security 比 Shiro 强在哪?...【SpringSecurity系列(十一)】自定义认证逻辑 【SpringSecurity系列(十二)】查看登录详情 1.需求分析 同一个系统,我们可能只允许一个用户一个终端上登录,一般来说这可能是出于安全方面的考虑... Spring Security ,这两种都很好实现,一个配置就可以搞定。...因为 Spring Security ,它是通过监听 session 的销毁事件,来及时的清理 session 的记录。...用户从不同的浏览器登录后,都会有对应的 session,当用户注销登录之后,session 就会失效,但是默认的失效是通过调用 StandardSession#invalidate 方法来实现的,这一个失效事件无法被

96810
  • 使用Spring Session和Redis解决分布式Session跨域共享问题

    以前写的一篇文章: 使用Redis存储Nginx+Tomcat负载均衡集群的Session 这一篇文章已经学习了一下,如何使用 tomcat-redis-session-manager 开源项目解决分布式...Spring Session不依赖于Servlet容器,而是Web应用代码层面的实现,直接在已有项目基础上加入spring Session框架来实现Session统一存储Redis。...Multiple Browser Sessions - Spring会话支持单个浏览器实例管理多个用户的会话。...可以发现已经有值了!并且有expirations,可以看到箭头指向的位置,是失效的时间记录值! (8)到此,Spring Session的使用已经完成!...总结 对于分布式环境Session跨域共享的问题,不管是使用开源的框架还是使用自己开发的框架,都需要明白的一个问题是:Tomcat容器创建Session是一个很耗费内存的事情。

    1.8K20

    《Apache Shiro 源码解析》- 7.会话

    Spring 通过 Spring Session 框架为应用提供了对会话管理的支持,特别是分布式环境,这样可以更灵活地不同的存储(如 Redis、JDBC、Hazelcast 等)之间管理会话。...SpringSessionBackedSessionRegistry 帮助类,将 SessionRegistry 连接到 Spring Session,支持 Spring Security 的会话并发控制和会话失效管理...Enumeration getAttributeNames() Enumeration getAttributeNames() 返回存储会话的所有属性名的枚举。...为了方便读者理解这些类的继承结构,我们把其中核心的类放在以下结构图中同时展示: 7.4.8 如何与 SpringSession 机制整合 到此为止,我们已经理解了 Shiro Session...此时,Shiro 与 Spring 的集成已经水到渠成。

    7510

    HttpSession概述

    我们可以把会话需要的共享数据保存到HttpSession 获取HttpSession对象 HttpSession request.getSession():如果当前会话已经有了session对象,直接返回...):用来移除HttpSession的域属性,如果参数name指定的域属性不存在,那么本方法什么都不做; Enumeration getAttributeNames():获取所有域属性的名称; Session...当客户端再次访问浏览器时,已经没有了cookie(sessionid也没有了)。服务器会重新为客户端创建session。 原先的session特定的时长后被服务器删除。...Tomcat的配置为30分钟,可以${CATALANA}/conf/web.xml找到这个配置,也可以自己的web.xml覆盖这个配置!...调用这个方法会被session失效,当session失效后,客户端再次请求,服务器会给客户端创建一个新的session,并在响应给客户端新session的sessionId; boolean isNew

    32420

    Spring MVC使用redis共享session

    See http://docs.spring.io/spring-session/docs/current/reference/html5/#api-redisoperationssessionrepository-sessiondestroyedevent...See http://docs.spring.io/spring-session/docs/current/reference/html5/#api-redisoperationssessionrepository-sessiondestroyedevent...解决方案:1)通过申请设置notify-keyspace-events为Egx;2)配置文件添加如下配置(这个配置和JedisConnectionFactory的放置在一起): 测试时,打开浏览器输入 http://localhost:8080/springsession/put 即可设置sessionRedis可以查看到: [图1.png] 然后通过...http://localhost:8080/springsession/get 请问的时候会发现,在请求cookie中会有: [图2.png] 到此,spring session的简单使用和测试就已经完成了

    3.5K250

    Servlet 会话

    Web浏览器第一次发送请求到服务器开始直到一方断开为止算作一个会话。HTTP协议本身没有状态,那么Web服务如何知道这次请求是否一个会话呢?...Web提供了Cookie和Session两种技术。 服务器第一次收到请求之后,会在HTTP响应头的Set-Cookie,设置Cookie值,浏览器收到响应后,保存这个Cookie本地。...使用的注意事项如下: 一次可以返回多个Cookie,多次调用response.addCookie即可 默认情况下浏览器关闭页面后cookie失效,但是可以设置cookie失效时间 Cookie虽然可以用来识别一次会话...对象 函数列表 Session 对象常用函数如下: public Object getAttribute(String name); //该方法返回session 会话具有指定名称的对象,如果没有指定名称的对象...public Enumeration getAttributeNames(); //该方法返回 String 对象的枚举,String 对象包含所有绑定到该 session 会话的对象的名称。

    1K20

    深入理解 Cookie 与 Session ,Facade 设计模式, 分布式 Session

    Expires属性缺省时,为会话性Cookie,仅保存在客户端内存,并在用户关闭浏览器时失效;持久性Cookie会保存在用户的硬盘,直至生存期到或用户直接在网页单击“注销”等按钮结束会话时才会失效...(5)Secure属性:指定是否使用HTTPS安全协议发送Cookie。使用HTTPS安全协议,可以保护Cookie浏览器和Web服务器间的传输过程不被窃取和篡改。...6.Redis代替文件存储session 7.分布式session的同步问题 计算机科学,特别是在网络,会话是两个或更多个通信设备之间或计算机和用户之间的临时和交互式信息交换。...可以使用spring的解决方案spring session,使用方法如下 1.pom引入依赖 org.springframework.session...接着代码,就用原生的session操作,就是直接基于spring sesion从redis获取数据了。

    1.3K30

    【SpringSecurity系列(十六)】会话固定攻击与防御

    ---- 前两天和大家聊了 Spring Security session 并发问题,和小伙伴们聊了如何像 QQ 一样,用户一台设备上登录成功之后,就会自动踢掉另一台设备上的登录。...【SpringSecurity系列(九)】降低 RememberMe 的安全风险 微服务项目中,Spring Security 比 Shiro 强在哪?...不过这种请求地址大家 Spring Security 应该很少见到(原因请见下文),但是 Shiro 可能多多少少有见过。...如果你使用了 Spring Security ,其实是不用担心这个问题的,因为 Spring Security 默认已经做了防御工作了。...可以看到,在这里,我们有四个选项: migrateSession 表示登录成功之后,创建一个新的会话,然后讲旧的 session 的信息复制到新的 session ,默认即此。

    86441

    Session

    处理过程中会给用户创建一个 session 对象,用来存储用户请求处理相关的公共数据,并将此 session 对象的 JSESSIONID 以 Cookie 的形式存储浏览器 (临时存储,浏览器关闭即失效...作用域:一次会话 只要不关闭浏览器,并且 session失效的情况下,同一个用户的任意请求项目的任意 Servlet 获取到的都是同一个session 对象。...HttpSession 对象可用的几个重要的方法: public Object getAttribute(String name): 该方法返回session 会话具有指定名称的对象,如果没有指定名称的对象...,则返回 null public Enumeration getAttributeNames(): 该方法返回 String 对象的枚举,String 对象包含所有绑定到该 session 会话的对象的名称...(int interval) 方法来单独设置 session 会话超时 web.xml 配置 使用的是 Tomcat,除了上述方法,您还可以 web.xml 文件配置 session 会话超时,下面实例的超时时间是以分钟为单位

    1.6K10

    JSP内置对象

    客户端浏览器上将会得到跳转的地址,并重新发送请求链接。用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request的属性全部失效,并且开始一个新的request对象。...对于一些安全性要求比较高的网站,通常需要禁用缓存。...页面的输出已经全部写入到缓冲区。 缓冲区已满 JSP页面调用了response对象的flushbuffer()方法或out对象的flush()方法。...").toString();//调用toString方法 2.从会话移除指定的对象 对于存储session会话的对象,如果想将其从session会话移除,可以使用session对象的removeAttribute...getAttributeNames()方法 该方法用于返回所有已经定义的应用程序初始化参数的枚举、 application.getAttributeNames() 2.应用程序环境属性管理 通过application

    1.4K40

    Spring Security源码分析八:Spring Security 退出

    Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。...它提供了一组可以Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入...)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。...退出原理 清除Cookie 清除当前用户的remember-me记录 使当前session失效 清空当前的SecurityContext 重定向到登录界面 Spring Security的退出请求(默认为...= null) { logger.debug("Invalidating session: " + session.getId()); //#1.使当前session失效 session.invalidate

    67520

    javaweb项目学习笔记小总结!有硬货,不鸡肋!!!

    ASP.NET将所有的引用和代码生成的dll都部署bin,而Java Web的引用jar和生成的class分别存放在WEB-INF的子目录lib和classes。...Maven即解决了项目结构的规范问题又提供了强大引用处理等强大的功能,项目布局等方面已经是目前事实上的标准。...5.自定义Session Session存储安全性要求较高的会话信息方面是必不可少的,Session当然绝对不是用来存储用户登录状态的,但类似验证码等敏感信息却必须存储Session。...ASP.NET通过SessionStateModule通过配置文件配置实际的Session提供程序,Session提供程序实现了SessionStateStoreProviderBase,因此ASP.NET...实现自定义Session是通过继承SessionStateStoreProviderBase实现,配置Session是通过Web.config。

    92220

    2024年java面试准备--spring

    Spring设计目标:Spring为开发者提供一个一站式轻量级应用开发平台; Spring设计理念:JavaEE开发,支持POJO和JavaBean开发方式,使应用面向接口开发,充分支持OO(面向对象...比如mysql的MyISAM 数据源没有配置事务管理器 注: 因为springboot,他默认已经开启事务管理器。...session 一次 HTTP session ,容器将返回同一个实例 global-session 将对象存入到web项目集群的session域中,若不存在集群,则global session相当于...session 默认作用域是singleton,多个线程访问同一个bean时会存在线程不安全问题 依赖注入三种方式(Ioc的三种实现方式) 构造方法注入 setter注入 基于注解的注入 实例化bean...上下文对实例化的Bean进行配置--也就是IOC注入; 如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,也就是根据就是Spring配置文件

    44850
    领券