如何将时间戳添加到我的用户会话中并设置最大不活动持续时间?

2024-07-04

我在应用程序中使用 Play 框架处理会话,如下代码所示。

def login = Action {
    { implicit request =>

          val email = request.body.asFormUrlEncoded.get("email")(0)
          val password = request.body.asFormUrlEncoded.get("password")(0)

          loginForm.bindFromRequest.fold(
              errors => BadRequest(html.login(errors,"Please enter valid username password")),
              //contact => Ok(html.login(loginForm,SignUpProcess.login(email,password)))
              contact => Redirect(routes.Application.home).withSession("email" -> email,"password" -> password)
          )
      }
  }

  def index = Action { request =>
    request.session.get("email").map{ user =>
        Redirect(routes.Application.home).withSession("email" -> user)
    }.getOrElse{
         Ok(views.html.login(loginForm,"Enter username password to login"))
    }

  }

我需要为我的会话添加超时。在 Play 文档中,

会话没有技术超时,当 用户关闭网络浏览器。如果您需要功能超时 特定应用程序,只需将时间戳存储到用户会话中并 根据您的应用程序需要使用它(例如,对于最大会话 持续时间、最大不活动持续时间等)。

如何将时间戳添加到我的用户会话中并设置最大不活跃持续时间?


通过在 conf/application.conf 文件中设置配置键的值来配置 Play 应用程序中的超时。

application.session.maxAge

会话超时,即会话 cookie 的最长期限。如果未设置,会话将在您关闭 Web 浏览器时过期。例如,将会话设置为一小时:

application.session.maxAge=1h

记住一周的会话:

application.session.maxAge=7d

默认值:会话基于临时 cookie,浏览器关闭时就会过期。

或者 你可以这样做:

在您登录期间,将“最后操作时间”设置为会话中的当前时间。

在您的 Global 类中,如果该标志存在,则覆盖 onRequest 测试

  • 如果没有,用户没有会话 -> 重定向到静默登录

  • if yes

    --- 测试上次时间是否超过 30 分钟前

         ------ if yes, session timeout -> add message to flash, rediect to login   
         ------ if no, update the flag with current time, let the page load
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将时间戳添加到我的用户会话中并设置最大不活动持续时间? 的相关文章

随机推荐