CAS 4.0 更改token存储方式(redis)后,产生的单点登出问题?

在将CAS 4.0的token存储从默认方式改为Redis后,遇到了单点登出问题。原因在于登出时,CAS无法获取到之前访问过的服务器信息。解决方案是在`CentralAuthenticationServiceImpl.java`的`grantServiceTicket()`方法中介入,确保将服务器信息一同存入Redis。同时,创建`RedisTicketRegistry.java`以实现新的存储逻辑。
摘要由CSDN通过智能技术生成

思路: 上一篇文章中,把TGT存入了redis集群中,跟踪代码后发现,在ticket对象中还存放着所有访问的server信息,因为当登出时,会往每个曾经访问过CAS客端发送登出信息。因为修改了存储方式,导致该对像无数据。所以我们要把server信息也存入redis中, 退出时取出。

CentralAuthenticationServiceImpl.java中介入,grantServiceTicket() 该方法是生成TOKEN及存储的。


        final ServiceTicket serviceTicket = ticketGrantingTicket.grantServiceTicket(generatedServiceTicketId, service,
                this.serviceTicketExpirationPolicy, credentials != null);//存service  , 单点拿出时拿出来用。lumz

        //add by lumz for store service to redis
        if (ticketGrantingTicket != null){
        	HashMap<String, Service> sm = new HashMap<String, Service>();//缓存MAP
        	HashMap<String, Service> sm1 = new HashMap<String, Service>();//临时MAP
        	String key = ticketGrantingTicket.getId()+ticketGrantingTicket.getAuthentication()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值