gpt4 book ai didi

session 感知应用程序

转载 作者:行者123 更新时间:2023-11-28 22:00:42 25 4
gpt4 key购买 nike

我有意编写“ session 感知”应用程序而不是“ session 共享”应用程序。以下是一个场景:

我在 Tomcat 的一个实例中部署了一个 Web 应用程序 (WA1)。假设所有应用程序都部署在根目录上并且我们不处理上下文。此应用程序允许用户登录、在网站上执行操作和注销。

另一个 tomcat 实例上有另一个 webapp (WA2)。该应用程序处理一项服务,比方说,它读取一些文件并流式传输到浏览器。

WA1 提供一个页面,该页面包含一个链接到 WA2 的链接。

现在我在 WA1 中有一个有效 session ,它标识用户是谁以及该 session 是否有效。我希望 WA2 在响应来自 WA1 服务的页面的请求之前知道它。

处理此问题的最佳方法是什么?

我排除了共享 session (除非那是更好的方法,请解释),因为 WA1 本身可以负载平衡,WA2 可以负载平衡,并在两个负载平衡实例上保持共享 session 该应用程序可能会变得不堪重负。

我倾向于“ token ”机制.. 其中 WA1 创建一个与每个 session 关联的 token ,并使其可用于从 WA1 提供的任何页面到 WA2 的每个 url。 WA2 将首先检查 token ,看看它是否是一个有效 token (有很多方法可以做到这一点:A:对 WA1 进行网络服务调用以询问 token 是否是有效 session token .. B:WA1 持久存在于数据库或文件系统和 WA2 从那里寻找..),如果它是有效的,那么尊重请求。这里的问题是确保 token 在 WA1 中的 session 过期时失效。

我想知道这种方法是否足够好,或者有更好的方法吗?

谢谢

米。而是

最佳答案

默认情况下,servlet API 使用通常名为 jsessionid 的 cookie 来在每个浏览器中存储 session ID。然后,浏览器随每个请求将 cookie 传递给服务器。只要 tomcat 的两个实例都在同一个域中,它们就应该都可以访问该 cookie。除非我遗漏了什么,否则这只是在第二个应用程序中测试该 cookie 的问题。

更新:即使每个tomcat实例运行在不同的域中,它们仍然可以通过调用Cookie类的setDomain(String domainPattern)方法共享这些cookie .

关于 session 感知应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5732533/

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