【问题标题】:Session-Timeout and Secure in web.xmlweb.xml 中的会话超时和安全
【发布时间】:2017-10-23 05:09:34
【问题描述】:

在这里发布问题之前我已经做了一些功课,并且我明白,如果我的服务器在定义的时间限制内没有收到任何请求,Session-Timeout 将使我的会话过期。

但我的疑问是:

我的服务器没有会话,即它根本不保持会话。

对于每个请求,我检查令牌是否存在,我将批准该请求,否则拒绝该请求,此外,如果用户选择退出,我将该令牌标记为无效。因此,下次如果有人使用该令牌,则不应访问受保护的 API。

是的,我在生成新令牌时使用到期时间。

这是否意味着,我不必在我的 web.xml 中设置“会话超时”?

还是我错过了什么?

谢谢。

/***** 已更新 ******/

让我添加更多信息,我从用户那里获取“用户名”和“密码”并生成有效期为 1 天的令牌。对于每个 api 请求,我都希望用户向我发送这个令牌,然后只有我会让他走得更远。 当他注销时,我将此令牌标记为无效,因此下次他尝试使用任何 api 时,我会再次询问他“用户名”和“密码”

现在,我的疑问是

假设用户第一次来给我“用户名”和“密码”,我生成一个令牌并给他,我设置令牌的有效期为 1 天。

现在我设置 Session-timeout = 20 分钟,这意味着如果用户在 20 分钟内没有提出任何请求,他的会话将结束。

但我敢肯定,如果 20 分钟后他将访问任何 API,服务器将授予请求,因为令牌仍然有效(用户尚未注销)。

那么使用“SESSION-TIMEOUT”有什么用呢?

【问题讨论】:

  • 你说MY SERVER DO NOT MAINTAIN SESSION AT ALL.你修改过你的tomcat context.xml是什么意思。默认情况下,你的会话将存储在你的tomcat服务器上,默认超时时间为30分钟。
  • 不,我没有改变任何东西,我使用 JWT 令牌来验证用户,而不是维护任何会话。有没有像默认会话这样的东西,对不起,我不知道。我会进一步了解它。
  • 这完全取决于您如何设置应用程序,例如JSP。我建议将 HttpSessionListener 附加到您的应用程序,这样您就可以跟踪事情。顺便提一句。通常,“会话”是指名为“jsessionid”的 cookie。 docs.oracle.com/javaee/6/api/javax/servlet/http/…

标签: java session servlets tomcat7


【解决方案1】:

在 JEE Servlet 应用程序中,会话是与 cookie 关联的值。在幕后,这个值被 servlet 容器用作在服务器内存中存储带有参数的映射的键。 web.xml 中的 session-timeout 值确定了用户在 cookie 值过期和地图被处理为垃圾回收之前可以处于非活动状态的时间。

【讨论】:

  • 是的,我想我在使用令牌维护会话和默认会话 (JSESSIONID) 之间感到困惑。
猜你喜欢
  • 2013-03-01
  • 2012-11-07
  • 2011-03-08
  • 2015-08-05
  • 2015-10-19
  • 2012-02-17
  • 1970-01-01
  • 2014-11-28
相关资源
最近更新 更多