1

我开发了一个带有 Rest 完整服务的 Java Web 应用程序,并且我已经集成Apache Shiro了会话管理,它在 Web 上运行良好。现在我开发了一个 android 应用程序,我能够与其余的完整服务进行通信。当我使用我的 android 应用程序登录时,Apache Shiro 为我提供了一个会话,但之后对于任何其他完整的调用,我都会SecurityUtils.getSubject().isAuthenticated()返回 false。因为我是新手,所以我不知道如何使用 Apache Shiro 验证 android 应用程序

4

1 回答 1

1

(我刚刚从另一篇关于该主题的帖子中复制了我的回复)

您可以在成功登录后从 REST 服务器发回令牌(会话 ID)。然后,您的 iOS/Android 应用程序将需要存储它,并将其与它发出的每个 REST 请求一起发送。以下是您的登录后 REST 响应的示例:

session-start-timestamp: 1394683755389,
session-timeout: 1800000,
session-id: "068C8E0E289788A7ABC5FE47B2CC0D28"

session-id 将由您的 REST 服务器维护,每次带有此 id 的新请求进入时,都会重置其 TTL。

在浏览器上,此 ID 会自动发送。对于您的情况,您可能希望在每个 HTTP 请求(这就是 REST 请求)中显式发送它 - 因为您没有将此令牌发送回 Shiro/REST 服务器,Shiro 认为您是一个新的未经身份验证的用户,因此, isAuthenticated 检查失败。

希望这可以帮助

于 2014-03-13T04:23:05.580 回答