【问题标题】:sharing session between php and jspphp和jsp之间的共享会话
【发布时间】:2011-12-20 21:41:09
【问题描述】:

我们有一些网页是用 JSP 编写的,还有一些是用 PHP 编写的。

我们想要完成的是,每当用户登录(通过 PHP 页面)时,我们希望保存会话信息(用户 ID、登录时间等)并在访问 JSP 页面时使用相同的信息.

我们如何使用相同的会话 ID 共享 JSP 和 PHP 会话信息?

有没有办法做到这一点,或者它们是否会自动相互兼容?

【问题讨论】:

  • 我建议使用通用数据库表来存储会话信息,并为每种语言编写自己的会话处理例程。
  • Thanx Scuzzy。有没有更好的方法来做到这一点?在这种情况下,我们必须在注销时从数据库中删除会话信息。但是如果用户关闭浏览器或关闭他的系统退出注销会发生什么?我们在 db 中留下了多个无用的条目。
  • 好的,用户关闭浏览器的问题可以通过 cookie 本身来解决,一个空或 0 过期将在浏览器关闭时过期 cookie(以及会话 ID)。从那里您可以构建自己的垃圾收集功能来清理一段时间内不活动的会话表。处理此问题的最简单方法是在验证登录详细信息之前,根据上次使用的时间戳清理旧行,理想情况下,您可能只想在每次会话更新之前执行此操作,以确保已将连接闲置时间过长的用户会自动注销。

标签: php jsp session


【解决方案1】:

您应该有一个通用的分布式会话管理,PHP 和 JSP 页面将使用它来检索会话。您还需要为 JSP 和 PHP 提供请求包装器,它会覆盖 getSession() 并将会话管理委托给您的自定义分布式会话管理。

我不知道如何在 PHP 中包装请求,但是对于 JSP,你可以有一个过滤器来创建一个请求包装器。

常见的分布式会话管理应该照顾会话管理生命周期,例如:

  1. 如果不存在具有给定 ID 的会话,则创建会话。
  2. 如果存在具有给定 ID 的会话,则查找会话。
  3. 当用户注销时使会话失效,即当页面使会话失效时。
  4. 如果会话在给定超时时间内空闲,则使会话无效。会话管理线程应以给定的时间间隔验证会话,并使超过超时值的会话无效。

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 2018-07-03
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2011-01-29
    相关资源
    最近更新 更多