代码编织梦想

在获取session的Service中,加入代码:

    @Autowired
    private FindByIndexNameSessionRepository<? extends Session> sessions;

登录校验成功后,删除旧session信息,代码如下:

    public boolean removeOldLoginUserInfo(Integer userId, String sessionId) {
        String key = USER_LOGIN_KEY + userId;
        String sessionIdForRedis = redisTemplate.opsForValue().get(key);
        if (logger.isInfoEnabled()) {
            logger.error("userId is {}, sessionId is {}, sessionIdForRedis is {}", userId, sessionId, sessionIdForRedis);
        }
        if (!StringUtils.equalsIgnoreCase(sessionIdForRedis, sessionId)) {
            Session oldSession = sessions.getSession(sessionIdForRedis);
            if (oldSession != null) {
                if (logger.isInfoEnabled()) {
                    logger.info("old session toke is {} ", (String) oldSession.getAttribute(SessionKeyEnum.TOKEN.getKey()));
                }
                oldSession.removeAttribute(SessionKeyEnum.ACCOUNT.getKey());
                oldSession.removeAttribute(SessionKeyEnum.TOKEN.getKey());
                oldSession.removeAttribute(SessionKeyEnum.USER_NAME.getKey());
            }
        }
        redisTemplate.opsForValue().set(key, sessionId);
        return true;
    }    

拦截器中获取session信息做较验。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bo_hai/article/details/129629356

springsecurity中如何做到多个用户不能使用同一个账号同时登陆系统-爱代码爱编程

第 8 章 管理会话 多个用户不能使用同一个账号同时登陆系统。 8.1. 添加监听器 在web.xml中添加一个监听器,这个监听器会在session创建和销毁的时候通知Spring Security。 <listener> <l

spring boot +spring security4 config 配置同账号登录只允许一个在线_ayou_java的博客-爱代码爱编程

关于网上说的http方式配置无效问题,经验证,有点误导人,并且配置方式感觉过于复杂。 目前这种方式感觉是最简洁的一种方式。 一、核心配置: @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class WebS

springboot+springsession+redis实现session共享及唯一登录_保尔-科查筋的博客-爱代码爱编程_springboot+mybatis+springsession+redis实现session共享及

最近在学习springboot,session这个点一直困扰了我好久,今天把这些天踩的坑分享出来吧,希望能帮助更多的人。 一、pom.xml配置  <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp

spring security同一用户只允许登录一次_bandancer的博客-爱代码爱编程

@Configuration @EnableWebSecurity public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter { @Resource private SessionRegistry sessionRegistry; @

websocket+springboot+springsecurity+springsession结合使用_nb7474的博客-爱代码爱编程

此篇是在上一篇《websocket简介及结合springboot使用》基础上增加了springsecurity与springsession框架。使用这两个框架进行session与用户权限的管理。 目录 一

利用session实现一个账户只能在一个客户端登录,后登录客户端可以挤掉前登录客户端账号,类似QQ-爱代码爱编程

在项目中需要利用userId和时间戳生成订单,这就要保证一个用户在同一时间只能在一个客户端上进行操作,而且为了账号的安全性。所以就想实现QQ那样的后者挤掉前者的功能。 由于自己是一边学一边写的项目,所以对session这些功能的特性没有充分的了解。刚开始以为很简单,直接后者登录时直接查询当前用户信息是否已经存在在session中,如果存在移除掉前者的se

springSecurity结合使用实现redis管理session-爱代码爱编程

1. pom.xml 添加springsession的依赖: <span style="color:#000000"><code><dependency> <groupId>org.springframework.session</groupId> <artifactId

使用spring-session 根据sessionId 删除session-爱代码爱编程

根据sessionId 删除session 前言思路步骤原理问题 前言 需求:如何保证同一个账号保证只有一个在线。(即:我在设备A上先登录账号guest,同时另外一个人在设备B上也登陆账号guest,此时,设备A上的账号将会被挤下线) 思路 账号登录成功后,在数据库或redis中查询当前用户绑定的sessionId如果有值,则调用Sess

springboot+shiro实现单帐号只允许在一处登录-爱代码爱编程

这里使用的是session存储验证信息 R ajaxLogin(String username, String password,String code) { List<Long> userIdentityList = userService.findUserIdentityByUsername(username);

springsecurity+springboot实现踢掉前一个登录用户_独白re的博客-爱代码爱编程

SpringSecurity+Springboot实现踢掉前一个登录用户 1.需求分析 要实现一个用户不可以同时在两台设备上登录,有两种思路: (1)后来的登录自动踢掉前面的登录,就像大家在扣扣中看到的效果 (2)如果用

springsession+springsecurity结合使用实现redis管理session_spring-爱代码爱编程

目录 1. pom.xml2. 进行springsession的redis配置3. session配置4. 查看redis5. 获取redis中的当前用户总结 springboot中使用s

spring session 登录注册模块 拦截器 验证码 md5 社交登录-爱代码爱编程

拦截器,未登录不能访问(但是静态资源要放行) MVC配置类 @Configuration public class WebMVCConfig implements WebMvcConfigurer { @Au

spring boot + shiro 限制一个账号只有一个sessionid_java shiro 一个账号只能登陆一次-爱代码爱编程

最近项目需要处理限制一个账号只能一处登录,经过查阅网上资料基本上都是写一半丢一半,今天分享一下简单快速完整有效的方法,直接上代码。如下: /** * 获取同一个用户的session * @par