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