其他分享
首页 > 其他分享> > spring – 如何按特定主体名称删除现有会话

spring – 如何按特定主体名称删除现有会话

作者:互联网

我在我的项目中使用Spring Session 1.3.0和Redis后端.

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

是否有Spring会话的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,redis,spring-boot,spring-security,spring-session
来源: https://codeday.me/bug/20190828/1753849.html