【问题标题】:Updating Shiro 1.2.6 to 1.3.0 breaks access to server side将 Shiro 1.2.6 更新到 1.3.0 会中断对服务器端的访问
【发布时间】:2021-08-20 02:47:19
【问题描述】:

在我的应用程序中,我只更新了 Shiro 库,从 shiro-all-1.2.6.jar 到 shiro-all-1.3.0.jar。除了引用新 Shiro 库的构建路径之外,我没有更改任何其他库或配置文件。

日志显示用户确实登录了,但服务器端在 shiro 登录后就无法访问了。

试图弄清楚 1.2.6 和 1.3.0 之间发生了什么变化,以及我需要更改哪些设置,以使应用程序像以前一样工作。

非常感谢! -阿丽娜。

【问题讨论】:

  • 嗨@afrey!您能否在这篇文章中添加更多详细信息,您在日志中看到的错误,服务器返回的响应代码。您所说的“构建路径”是指手动管理工件还是通过 Maven 或 Gradle 等构建工具管理工件? SO 在如何提出更好的问题上有很好的资源:@​​987654321@
  • 在 Eclipse 中使用 ANT 构建。
  • 只要我修改了 Shiro.ini 中的 URL 以反映路径开头没有斜杠“/”的路径,我就能够访问服务器端:[urls] / FileUploadServlet = authc /FileDownloadServlet = authc /UserUnloadServlet = authc /soa_service = authc /data_update = authc /data_view = authc /load_lists = authc /error_services = authc /query_db = authc .html = authc
  • 另一个发现是 currentUser.isAuthenticated() 在 Shiro 1.2.6 中返回 TRUE,在 Shiro 1.3.0 中返回 FALSE。这就是我的应用程序没有加载的原因。这是用于此的代码:Subject currentUser = SecurityUtils.getSubject(); if (currentUser.isAuthenticated()) { return true; } 否则 { 返回错误;此外,currentUser.getPrincipal() 使用 shiro 1.3.0 返回 null,而返回使用 shiro 1.2.6 的登录用户。所以,我必须弄清楚是否需要以不同的方式调用当前用户,或者我的 shiro.ini 中是否需要更改一些内容。
  • 你试过调高 Shiro 的日志吗? 'org.apache.shiro'。如果您也需要,您可以将其调高到 TRACE。

标签: shiro


【解决方案1】:

经过更多挖掘,我发现与服务器的连接丢失了,因为在此过程中,由于初始会话丢失,因此创建了一个新会话。

当调用Session session = currentUser.getSession(); 时,我希望获得与登录用户关联的相同会话。相反,会创建一个新会话,因为旧会话不会持续存在。

同样,Shiro 1.3.0 会发生这种情况,但 Shiro 1.2.6 不会发生这种情况。

我想知道是否有我们需要应用的设置,以使会话持续存在并且不会丢失。我想知道会话是否会立即超时。

【讨论】:

    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 2018-10-17
    • 2014-12-13
    • 1970-01-01
    • 2015-10-02
    • 2022-08-24
    • 2016-11-16
    • 2013-07-07
    相关资源
    最近更新 更多