java – Spring会话数据Redis – 从Redis Store获取有效会话,当前用户

栏目: Java · 发布时间: 5年前

内容简介:Redis基本上是一个键值存储,不提供这样的查询功能.但是,您应该能够使用KEYS请求列出所有会话,然后在最后一个活动的基础上过滤它们,但是您提到的github问题中提到了缺点.您应该考虑在支持关系查询的数据存储中记录用户活动,将Redis保留为快速会话存储.
我的问题是,在分布式Web应用程序中,可以使用RedisOperationSessionRepository从Redis Store获取有效会话. (我的意思是我不想编写显式代码将它放入 Redis 存储区然后再读它,我想了解框架或 spring

-data-redis库是否提供了这个).

我知道Spring Redis能够恢复会话和服务器重启,如果会话仍然有效,也会保留登录(因为它由Redis支持)

我正在寻找的功能之一是获取当前在应用程序中的所有可能的登录用户.我知道SessionRegistryImpl和这个方法.但是我注意到这个方法没有Redis支持,并且在服务器重启后,不会返回登录用户.

public List<Object> getAllPrincipals() {
    return new ArrayList<Object>(principals.keySet());
}

我可以尝试的其中一个功能是Spring Session 1.1.0,Spring会话用户名查找.

> http://docs.spring.io/spring-session/docs/1.1.0.M1/reference/html5/guides/findbyusername.html

> https://spring.io/blog/2015/11/17/spring-session-1-1-0-m1-released

我试过,它确实返回了我有效的会话结果,但问题是我仍然需要知道使用此应用程序的所有当前有效用户名. (我不知道如何使用Redis Store获取它们,我再次可以存储在Redis中并获取它们,但我想知道是否有更好的方法).

这是一段代码,如果我知道会话ID,这是我可以从当前使用该系统的众多用户中的一个获得当前用户的方式.

final Session session = redisOperationsSessionRepository.getSession(sessionid);

    final Object obj = session.getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY);
    if (obj instanceof SecurityContext) {
        final SecurityContext context = (SecurityContext) obj;
        final Authentication authentication = context.getAuthentication();
        if (authentication != null) {
            final Object principal = authentication.getPrincipal();
            if (principal != null && principal instanceof CurrentUser) {
                return (CurrentUser) principal;
            }
        }
    }

现在我可以使用上面的逻辑来获取所有当前用户,但是我应该再次使用所有有效的会话ID,我不知道如何从Redis商店获取.

新更新:

https://github.com/spring-projects/spring-session/issues/255

在此链接中,我可能会获取所有会话ID并在RedisOperationSessionRepository中查找活动会话,但可能会导致性能问题.

我不确定我是否清楚自己,但是我们不能使用spring session api告诉Redis,只要给我所有有效的会话及当前用户当前登录.(根据上次访问的时间或类似的东西)那).

谢谢

Redis基本上是一个键值存储,不提供这样的查询功能.

但是,您应该能够使用KEYS请求列出所有会话,然后在最后一个活动的基础上过滤它们,但是您提到的github问题中提到了缺点.

您应该考虑在支持关系查询的数据存储中记录用户活动,将Redis保留为快速会话存储.

翻译自:https://stackoverflow.com/questions/35921919/spring-session-data-redis-get-valid-sessions-current-user-from-redis-store


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

打火机与公主裙·荒草园

打火机与公主裙·荒草园

Twentine / 青岛出版社 / 2017-3 / 36.00元

“如果人临死前真有走马灯这个环节,她大概会是我这辈子见的最后一人。” 从青涩的校园时代里一抹明亮的金,到厮杀的职场中那化不开的黑,李峋就像荒芜之地的一株野草,受到再大的挫折依然固执地生长。 如果说朱韵从前的生活一直维持着表面的顺风顺水,平静安和,那李峋的出现则打破了这一切。他是她生命中第一次,也是唯一一次的冒险。 在外人眼里李峋嚣张而轻蔑,只有朱韵懂得他心中那片自留地,自愿成为孤......一起来看看 《打火机与公主裙·荒草园》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换