liuhuansir
V2EX  ›  Java

咨询 spring+shiro+redis 做 session 共享问题

  •  
  •   liuhuansir · Feb 8, 2018 · 9275 views
    This topic created in 3199 days ago, the information mentioned may be changed or developed.

    最近搞这块儿的东西,整个流程倒是实现了,遇到一个问题,涉及到 shiro 的源码,具体问题是:shiro 的 Session 类通过序列化存储在 redis 的时候,Session 的某些字段丢失了,我看了它的实现类 SimpleSession,丢失的字段被 transient 修饰了,导致这些字段没被序列化,问题来了,login 之后,session 被保存了,其他接口请求的时候,shiro 会去 redis 里获取该用户的 session,然后 sessionId 丢失了,报了如下异常:java.lang.IllegalArgumentException: The org.apache.shiro.session.mgt.DelegatingSession implementation requires that the SessionKey argument returns a non-null sessionId to support the Session.getId() invocations.

    Supplement 1  ·  Feb 8, 2018
    额,1,2 楼,我主要是为了用 shiro 做安全认证,和权限管理,所以才使用这种方式;我也是刚从 android 转到 Java 后台开发的,先熟悉下 spring 和 springmvc,spring boot 这种一站式的以后再研究吧
    9 replies  •  2019-05-07 14:18:15 +08:00
    liuhuansir
    liuhuansir
    OP
    Feb 8, 2018
    1
    可能说的不够清楚,求好心人解答,有疑问可以提出来
    azhw
    azhw
    Feb 8, 2018
    2
    以前考虑过这种方案, 有点麻烦放弃了.

    tomcat 好像有个 redis 插件的, 直接配置下 xml 就可以 session 保存到 redis 中共享.
    缺点: tomcat 版本好像有限制.

    或者直接用 nginx +插件 / haproxy 配置负载均衡, session 粘滞 就好了.
    grq100296
    grq100296
    Feb 8, 2018
    4
    去掉 shiro 的 session 管理器即可
    bobuick
    bobuick
    Feb 8, 2018
    5
    proxy 接管 shiro 这块对 session 的管理
    liuhuansir
    liuhuansir
    OP
    Feb 8, 2018
    6
    @grq100296 额,你是说不用 DefaultWebSessionManager,这个?
    grq100296
    grq100296
    Feb 8, 2018
    7
    @liuhuansir 对,把这个去掉就行了,session 交给 redis
    top1ms
    top1ms
    Dec 26, 2018
    8
    我目前也在做这个 遇见了 session 放 redis 反序列化出错的问题 我的问题是 SimpleSeesion vaild 这个属性 造成的 看了一下其他的解决方式 添加类 替换管理类 都比较麻烦 我目前的思路是 用一个 map 代理 SimpleSesssion 的参数 自定义的 SessionDAO doReadSession()方法中 再根据 map 里的值转换为 SimpleSession 如果不对 大佬萌指正吼
    mingzihentebie
    mingzihentebie
    May 7, 2019
    9
    请问作者解决 sessionid 丢失的问题了吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1066 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 18:25 · PVG 02:25 · LAX 10:25 · JFK 13:25
    ♥ Do have faith in what you're doing.