将用户会话信息存入redis

怎么将用户会话信息存入redis呢?

技术上是可行的,但是什么情况下需要这样做? CUBA 本身支持集群部署,集群部署时 Session会在各节点之间分发。

我们的需求是这样的:使用CUBA搭建一个统一的认证中心,我们其他非CUBA项目最终也会统一使用认证中心认证(CUBA项目),当然其他的CUBA子系统也会使用这个认证中心。现在想的是登录成功之后,将会话信息存入redis,非CUBA系统直接从redis中获取用户凭证,判断是否已登录、会话是否失效。

CUBA 有个 IDP 扩展。建议你们可以基于这个扩展做认证中心。这样既可以满足 CUBA 应用的认证需求,也可以作为其它应用的认证中心。你们可以先研究一下这个扩展。

另外一般来说认证中心并不管理 session,只负责身份认证。这块的思路似乎有问题,也可能是我没有理解你们做法。

其它非 CUBA 应用如何与CUBA 应用共享 session?两种不同架构的应用,Session类、session结构都不一样,如何共享?能共享的只是登录信息。

是的,现在就是基于IDP搭建的一个认证中心,想的是兼顾CUBA系统跟非CUBA系统。我们针对非CUBA系统的会话共享,本质也是共享登录信息,不会连session也共享,因为结构都不一样。

目前我们的思路就是想重写CUBA的添加会话、移除会话。我们重新实现了UserSessionsAPI,服务启动的时候,匿名用户登录时,会调用我们重写的方法,但是打开页面进入登录页面的时候,又在调CUBA内部的实现方法。

所以有没有什么方法 能都调用我们自己实现的方法

再具体一点, 要调用的是哪个类哪个方法?实际调用的是哪个类的哪个方法?

image
这是我重新实现了UserSessionsAPI 的类,想重写添加会话、移除会话方法:
image

但是进入登录页面的时候在调以前的类:
image

谢谢,我已经找到解决方案了。参考 扩展业务逻辑