gpt4 book ai didi

java - org.apache.shiro.session.mgt.DelegatingSession 实现要求 SessionKey 参数返回非空 sessionId

转载 作者:行者123 更新时间:2023-12-01 09:27:32 25 4
gpt4 key购买 nike

我们使用 Apache Shiro 一段时间了,没有出现任何问题,但最近注意到用户在尝试登录或注销我们的应用程序后收到以下错误:

java.lang.IllegalArgumentException:org.apache.shiro.session.mgt.DelegatingSession 实现要求 SessionKey 参数返回非空 sessionId 以支持 Session.getId() 调用。

这可能是什么原因造成的?

最佳答案

事实证明,问题正是错误消息所指出的 - 我们在 session 数据中缺少“id”字段。

这是怎么发生的?我们有多个应用程序读取和写入 session 数据,这些数据存储在 Redis 中以支持单点登录。

写入此存储的应用程序之一是将我们的 session 数据写为不带“id”属性的 json,该属性对应于存储在 cookie 中的 session ID。

例如,错误的 session 数据如下所示:

{
"lastAccessTime": "2016-09-21T12:35:00.018526Z",
"startTimestamp": "2016-09-21T12:35:00.018526Z",
"timeout": 1800000
}

良好的 session 数据看起来像这样(至少) - 请注意,有一个“id”属性,它与存储在 session cookie 中的 session ID 相匹配。

{
"id": "f9b4f222-2660-4318-aae9-ba5f455d560",
"lastAccessTime": "2016-09-21T12:40:44.813222Z",
"startTimestamp": "2016-09-21T12:40:42.592Z",
"timeout": 1800000
}

因此,我们所要做的就是让该应用程序添加“id”属性,然后就解决了问题!

关于java - org.apache.shiro.session.mgt.DelegatingSession 实现要求 SessionKey 参数返回非空 sessionId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39724015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com