我在应用程序中使用 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(使用前将#替换为@)