ningyu1 / ningyu1.github.io

凝雨-Yun的技术博客
https://ningyu1.github.io
6 stars 0 forks source link

CAS使用经验总结,纯干货 #1

Open ningyu1 opened 5 years ago

ningyu1 commented 5 years ago

https://ningyu1.github.io/blog/index.html

Bouger-CN commented 5 years ago

感谢

klboke commented 5 years ago

博主博文写的不错,我也写博客这是我的地址,http://www.kailing.pub 欢迎回访,多多交流。ps:我们用的相同的评论系统Gitalk ,你的好像有点问题

ningyu1 commented 5 years ago

@klboke 博主博文写的不错,我也写博客这是我的地址,http://www.kailing.pub 欢迎回访,多多交流。ps:我们用的相同的评论系统Gitalk ,你的好像有点问题

不想创建过多issue,所以公用了一个^_^

taohuangtao commented 5 years ago

在客户端需要集群部署的时候你的 “Client Server集群模式下session问题”,实现代码我用了,看了您使使用json序列化的,在反序列化时候,取出来实际上只有一个ID呢? redisClient.get(mappingId, NAME_SPACE, HttpSession.class, null); 就使这个位置,看源码,实际上HttpSession是一个接口。在后续操作中没法执行org.jasig.cas.client.session.SingleSignOutHandler 调用 的session.invalidate();方法。

我现在的解决方式是将session id放入和mappingid的对应关系中,lougou的时候通过mappingid获取到session id,删除redis中的对应session数据来解决的,这里会对tomcat中的session管理器强耦合,因为不同的session管理器的sessionid前缀不一样。

实现代码

public HttpSession removeSessionByMappingId(String mappingId) {
        Jedis jedis = jedisPool.getResource();
        try {
            String sessionId = jedis.get(casRedisNameSpace + mappingId);
            if (sessionId != null) {
                LOG.debug("Found session for mappingId.  Session Removed.");
            } else {
                LOG.debug("No session for mappingId found.  Ignoring.");
            }

            if (sessionId != null) {
                LOG.debug("找到session [{}] ,删除", sessionId);
                //此处需要对session的管理组件强耦合,session key必须一致
                //
                String redissonId = "redisson:tomcat_session:"+sessionId;
                LOG.debug("找到session [{}] ,删除redis中的session", redissonId);
                jedis.del(redissonId);
                removeBySessionById(sessionId);
            }
            return null;
        } finally {
            jedisPool.returnResource(jedis);
        }
    }
ningyu1 commented 5 years ago

@taohuangtao 嗯嗯,其实只放id是可以的

ghost commented 5 years ago

https://leel0330.github.io/,欢迎回访^v^