spring - 如何通过特定主体名称删除现有 session

标签 spring spring-boot spring-security redis spring-session

我在我的项目中使用带有 Redis 后端的 Spring Session 1.3.0。

我有一个用例, super 管理员可能会更新可能已经登录的现有用户的角色。我想在更改角色后删除这些用户的现有 session 记录。

有Spring Session的API可以存档吗?

最佳答案

    @Autowired
    private SessionRegistry sessionRegistry;

    public void expireUserSessions(String username) {
        for (Object principal : sessionRegistry.getAllPrincipals()) {
            if (principal instanceof User) {
                UserDetails userDetails = (UserDetails) principal;
                if (userDetails.getUsername().equals(username)) {
                    for (SessionInformation information : sessionRegistry.getAllSessions(userDetails, true)) {
                        information.expireNow();
                    }
                }
            }
        }
    }

关于spring - 如何通过特定主体名称删除现有 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42083519/

相关文章:

grails - intellij 无法解析 grails.plugin

spring - 如何在服务层中结合 JSR-303 和 Spring Validator 类?

使用 Spring 3 MVC 和 jQuery 的 JSON 响应

java - 在子级中插入新记录的多对多映射问题(JPA)

jquery - Spring Boot Dandelion 数据表 Thymeleaf 日期之间的搜索

java - Spring Security 注释会影响 Spring MVC 调用的调度吗?

java - 如何使用 Java 配置表示 Spring Security "custom-filter"?

Java注解看不到同一个注解类的私有(private)字段

spring - 在 Spring Boot 应用程序的测试类中禁用 Spring Cloud Config 的自动配置

java - Spring Boot 2.0 中的 RedisCacheManager.setCacheNames