【问题标题】:Spring MVC Session Max lifetimeSpring MVC 会话最大生命周期
【发布时间】:2017-06-23 06:16:05
【问题描述】:

我知道我们可以session.setMaxInactiveInterval(1200); 设置不活动时的会话到期时间。我有一个要求,比如用户会话应该在给定的时间点过期。

例如,如果用户配置为从上午 9 点到晚上 9 点访问,则应该在晚上 9 点强制注销。

有没有像session.maxLife(1200); 这样的功能或任何其他解决方案来实现这一点?

【问题讨论】:

  • 如果我理解,您想在特定时间使会话过期吗?
  • @Hrabosch 在特定时间或特定间隔之后;哪个可行
  • 所以,我不知道您如何实现这一目标。但也许你可以通过在特定时间计算来设置生命周期来设置会话超时。我的意思是现在创建了像 Session 这样的东西,所以检查什么是时间,从中计算生命周期。但我从未尝试过!现在想想。
  • 我可以处理登录部分。只需要在特定时间结束后强制注销用户。例如晚上 9 点之后的第一个请求应该强制注销。

标签: java spring spring-mvc session spring-security


【解决方案1】:

我认为您想要实现的目标可以通过拦截器来完成。唯一不同的是,您不是最初决定生命周期,而是在分析会话后动态阻止/允许请求。会话中可用的不同方法在http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSession.html 中列出。

您可以为每个会话设置自定义属性,例如 accessStartTime、accessEndTime 并在所有请求的拦截器中每次读取它们。如果当前时间不在用户访问时间段的范围内,则可以在会话对象上调用invalidate。

【讨论】:

  • 感谢您的建议。但是我一直在寻找没有拦截器/过滤器的解决方案。我想在 spring 中使用任何内置功能,避免对每个请求进行此检查的开销
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 2011-08-21
  • 2016-11-21
  • 2014-08-03
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
相关资源
最近更新 更多