当前位置: 首页 > 面试题库 >

在春季会话到期之前执行自定义事件

徐经武
2023-03-14
问题内容

我是Spring框架的初学者。

在我的情况下,会话可以通过以下方式过期
->成功注销(显式注销)

->会话超时(隐式注销)

每当某些用户登录时,我都会在数据库中执行DML(记录插入),并且每当用户会话超时(隐式注销)时,我都希望在数据库中执行DML(记录删除)。

我的问题是,春季会议期间有什么办法告诉我们。因此,我可以在会话到期前执行自定义事件。

提前致谢


问题答案:

是的,您可以使用SessionDestroyedEvent做到这一点。

@Component
public class SessionEndedListener implements ApplicationListener<SessionDestroyedEvent> {

    @Override
    public void onApplicationEvent(SessionDestroyedEvent event)
    {
        for (SecurityContext securityContext : event.getSecurityContexts())
        {
            Authentication authentication = securityContext.getAuthentication();
            YourPrincipalClass user = (YourPrincipalClass) authentication.getPrincipal();
            // do something
        }
    }

}

并在web.xml中:

<listener>
    <listener-class>
        org.springframework.security.web.session.HttpSessionEventPublisher
    </listener-class>
</listener>

常规注销和会话超时都会触发此事件。



 类似资料:
  • 问题内容: 只需要您对Spring声明式事务管理的专家意见。这是我的设置: DAO层是使用Spring JdbcTemplate的普通JDBC(没有Hibernate等) 服务层是具有声明式事务的POJO,如下所示- 通过上述设置,一切正常。但是,当我说时,我在日志文件中看到错误消息。对于服务层中的所有get *方法,都会发生这种情况。 现在我的问题是: 答:我必须设置为只读吗?我所有的方法都是纯

  • 我想在Spring Boot插件构建最终的WAR文件之前运行一个自定义操作。实际上,在通过Spring Boot将来自${project.build.directory}/${project.build.finalname}/WEB-INF/lib的一些JAR文件打包到WAR文件之前,我必须对它们进行模糊处理。 我可以对常规的WAR文件这样做,但是当Spring Boot Plugin重新打包应用

  • 因此,我在中有两个方法和,只执行一个SQL请求。 和我的中的两个方法:和。 最佳实践是从服务层返回Dto,因此我们需要将实体解析为服务中的Dto。 我真的不想把整个映射留在(session),因为如果我在实体中添加一些字段,那么Mapstruct只会触发N+1个问题。 我想出的最好方法是将每个内部实体包含到方法中,并手动检查Mapstruct是否添加了一些新方法。(它比检查名字更快)例如: 但这并

  • 这个虫子严重毁了我的一周。我试图创建一个交互式排行榜,其中有三个数组:1是图像,2是我以字符串形式编写的整数。我正在尝试创建一个keyPressed事件,它将使数字随着代表团队的图像而改变,因为他们在梯子上或下梯子,我有一个mousePressed事件来执行一个循环,将窗口恢复到它的原始状态。 我的问题是,当我尝试运行代码时,keyPressed事件不会执行,只有在我单击鼠标后才执行。然后图像会移

  • 网站会话在脚本执行期间过期。我有4门课,有15-16种测试方法。而我使用测试中的数据作为一个套件来执行所有操作。xml。 场景:在用户登录后执行搜索 我使用以下条件 所以我的问题是: 是我的网站问题还是网络驱动问题? 为什么会话会在页面导航上获得注销?我已经尝试了和,但没有成功。 有没有人能给我一个这样的问题的线索?

  • null 有人知道解决这个问题的办法吗?提前感谢! 迈克尔