gpt4 book ai didi

java - Play框架2识别 session 超时的用户

转载 作者:行者123 更新时间:2023-12-01 14:04:29 26 4
gpt4 key购买 nike

我有 Play Framework 2.1.2 应用程序,我需要在用户注销或关闭浏览器后执行清理指令。自从my other question我询问如何拦截关闭操作,我被告知在浏览器中坚持使用 javascript 并不可靠,我想使用其服务器端 session 超时事件来确认用户已离开。

所以我想要获得的流程与此类似:

  1. 用户登录
  2. 其 session 已创建
  3. 用户使用我的网络应用程序
  4. 用户注销/关闭浏览器 ---> session 过期
  5. 他不再在平台上,所以我可以在数据库上执行一些关于他所做的操作

我找不到任何在 session 过期时覆盖的方法。有人可以指出我的解决方案吗?

最终,另一个可接受的解决方案是一些定时事件,它会重复检查哪些用户不再连接,并对不再连接的用户池执行批量操作。如何实现这一目标?

最佳答案

我还需要一个 session 超时,因此我向 session 添加了一个时间戳(刻度),并在检查超时后根据每个请求更新它。

类似这样的:

// see if the session is expired
String previousTick = session("userTime");
if (previousTick != null && !previousTick.equals("")) {
long previousT = Long.valueOf(previousTick);
long currentT = new Date().getTime();
long timeout = Long.valueOf(Play.application().configuration().getString("sessionTimeout")) * 1000 * 60;
if ((currentT - previousT) > timeout) {
// session expired
session().clear();
return null;
}
}
// update time in session
String tickString = Long.toString(new Date().getTime());
session("userTime", tickString);

http://www.poornerd.com/2014/04/01/how-to-implement-a-session-timeout-in-play-framework-2/

关于java - Play框架2识别 session 超时的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19025432/

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