【发布时间】: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