如何在Play Framework 2中实现会话超时

如果您遵循Play Framework 2指南以实施身份验证: http://www.playframework.com/doc-m-e-t-t-i o / n..2..2..2 / Jac agéide4-您会注意到Play框架2中没有会话超时。在Play框架1中存在,但Play框架2采用了不同的方法。

我要实现自己的会话超时,然后通过扩展Security.Authenticator遵循设置身份验证的指南 ,并在会话中存储时间戳,并在每次发出请求时继续扩展它。

这是我的做法:

public class Secured extends Security.Authenticator {public static final String UNAUTHENTICATED = "unauthenticated";public static User getLoggedInUser() {if (session("userId") == null)return null;return User.findById(Long.parseLong(session("userId")));}public static String getLoggedInUsername() {if (session("userId") == null)return null;return User.findById(Long.parseLong(session("userId"))).getUsername();}@Overridepublic String getUsername(Http.Context ctx) {// see if user is logged inif (session("userId") == null)return null;// see if the session is expiredString previousTick = session("userTime");if (previousTick != null && !previousTick.equals("")) {long previousT = Long.valueOf(previousTick);long currentT = new Date().getTime();long timeout = Long.valueOf(Play.application().configuration().getString("sessionTimeout")) * 1000 * 60;if ((currentT - previousT) > timeout) {// session expiredsession().clear();return null;}}// update time in sessionString tickString = Long.toString(new Date().getTime());session("userTime", tickString);return User.findById(Long.parseLong(session("userId"))).getUsername();}
}

然后只需将sessionTimeout=15 (以分钟为单位)添加到您的conf文件中。

翻译自: https://www.javacodegeeks.com/2014/04/how-to-implement-a-session-timeout-in-play-framework-2.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中this指针

由类生成对象时&#xff0c;对象中只保存私有数据。 因为由一个类生成的所有对象为其数据服务的方法都是相同的&#xff0c;因此&#xff0c;一个类中的方法是大家所共用的。 而这就牵扯到当对象A调用方法时&#xff0c;如何保证该方法操作的数据是对象A的数据。 #include<i…

jfinal java搭建_Eclipse快速搭建Jfinal web应用 (一)

JFinal简介JFinal 是基于 Java 语言的极速 WEB ORM 框架&#xff0c;其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率&#xff01;为您节约更多时间&#xff0c…

PHP后台处理jQuery Ajax跨域请求问题 — xx was not called解决办法

// 前台代码 $.ajax({url: http://www.ushark.net/home/save_trial_apply,dataType: jsonp,processData: false,data: $(.layui-layer-content #trialFormInfo).serialize(), }) .done(function(data) {layer.msg(申请成功); }) .fail(function(jqXHR, textStatus, errorThrown…

[转]JavaScript面向对象的特性

如果你使用JavaScript编程&#xff0c;你或许会怀疑它是否包含了面向对象&#xff08;OO&#xff09;的结构。实际上&#xff0c;JavaScript的确支持面向对象的架构――在某种程度上。本文将通过一个可扩展向量图形&#xff08;SVG&#xff09;的实例来说明JavaScript的OO结构。…

命令行获取docker远程仓库镜像列表

命令行获取docker远程仓库镜像列表 获取思路 通过curl获取镜像tag的json串,解析后得到${image}:${tag}的格式 curl获取示例 # curl [:-s] ${API}/${image}/tags curl https://registry.hub.docker.com/v1/repositories/nginx/tags 获取脚本docker-search docker-search.sh #!/b…

如何使用VisualVM监视服务器上的多个JVM

在上一篇文章中&#xff0c;我向您展示了如何使用单个管理员服务器和多个托管服务器启动WebLogic Server。 这些启动之后&#xff0c;您如何检查它们的健康状况&#xff1f; 您可以使用管理员的/ console网络应用。 但是&#xff0c;所有默认的Oracle / Open JDK 6附带的另一个…

java isight zmf_isight集成catia和abaqus,nastran流程详解

isight集成catia和abaqus,nastran流程详解CAD软件中参数化建模&#xff0c;导入有限元软件中计算各个工况&#xff0c;isight根据计算结果调整模型参数&#xff0c;反复迭代计算的过程是尺寸优化的典型问题~下面将比较详解叙述菜鸟新手是如何成功用isight集成catia和abaqus流程…

KindEditor编辑器, 利用ajax动态切换编辑器内容

// 后台成功返回数据后的js处理 KindEditor.remove(#content_id); // 先移除之前创建的编辑器 var editor KindEditor.create(#content_id, { // 再重新创建编辑器     themeType: simple,     resizeType: 1,     urlType: domain,   // 将图片保存为绝对路径…

排序算法 JavaScript

一、冒泡排序 算法介绍&#xff1a; 1.比较相邻的两个元素,如果前一个比后一个大&#xff0c;则交换位置。 2.第一轮把最大的元素放到了最后面。 3.由于每次排序最后一个都是最大的&#xff0c;所以之后按照步骤1排序最后一个元素不用比较。 function bubble_sort(arr){var swa…

[你必须知道的.NET] 第一回:恩怨情仇:is和as

发布日期&#xff1a;2007.4.7 作者&#xff1a;Anytao ©2007 Anytao.com 转贴请注明出处&#xff0c;留此信息。 本文将介绍以下内容&#xff1a; • 类型转换 • is/as操作符小议 1. 引言 类型安全是.NET设计之初重点考虑的内容之一&#xff0c;对于程序设计者来说&…

USACO 6.3 章节 你对搜索和剪枝一无所知QAQ

emmm........很久很久以前 把6.2过了 所以emmmmmm 直接跳过 &#xff0c;从6.1到6.3吧 Fence Rails 题目大意 N<50个数A1,A2... 1023个数,每个数数值<128,B 问 A 们能拆分成多少个B,求最多的个数 样例 解释 A: 3030 4018193 501516172 2524 B: 15 (ok) 16 (ok) 17 (ok) 1…

在基于Spring的Web应用程序中使用Http Session

在基于Spring的Web应用程序中拥有和使用Http会话有多种方法。 这是基于最近项目经验的总结。 方法1 只需在需要的HttpSession中注入即可。 Service public class ShoppingCartService {Autowired private HttpSession httpSession;... }尽管令人惊讶&#xff0c;但由于上述服…

获取当前鼠标的位置以及组件的位置

总结&#xff1a; div如果要触发鼠标事件要加上css样式cusor:pointer。 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

谷歌推大语言模型VideoPoet:文本图片皆可生成视频和音频

Google Research最近发布了一款名为VideoPoet的大型语言模型&#xff08;LLM&#xff09;&#xff0c;旨在解决当前视频生成领域的挑战。该领域近年来涌现出许多视频生成模型&#xff0c;但在生成连贯的大运动时仍存在瓶颈。现有领先模型要么生成较小的运动&#xff0c;要么在生…

java scala 获取类_在Scala 2.10中获取java.lang.Class [T]的Scala类型

您可以像这样实现您的方法&#xff1a;def getType[T](clazz: Class[T])(implicit runtimeMirror: ru.Mirror) runtimeMirror.classSymbol(clazz).toType然后像这样调用它&#xff1a;implicit val mirror ru.runtimeMirror(getClass.getClassLoader)getType(classOf[String])…

解决ios8下coreData没有NSPersistentContainer的问题

用Xcode8.1默认创建ios app的时候&#xff0c;使用coreData的话&#xff0c;要10.0以上的版本才行。因为NSPersistentContainer只有10.0以上的版本才有&#xff0c;10.0以下的版本是没有的&#xff0c;那怎么办呢&#xff1f;有办法&#xff0c;专为8.0版本加写的INSPersistent…

spring 与 guice 的区别好玩的好法(转)

看下边对于不同社会形态下一个人&#xff08;java对象&#xff0c;调用者&#xff09;需要一把斧子&#xff08;java对象&#xff0c;被调用者&#xff09;的例子&#xff1a;&#xff08;1&#xff09;原始社会时&#xff0c;劳动社会基本没有分工&#xff0c;需要斧子的人&am…

PyCon大会Python主题演讲摘要

PyCon 是全国际最大的以 Python 编程言语 为主题的技能大会。大会由 Python 社区组织&#xff0c;每年举行一次。在大会上&#xff0c;来自国际各地的 Python 用户与中心开发者齐聚一堂&#xff0c;共同同享 Python 国际的新鲜事、Python 言语的应用案例、运用技巧等等内容。 I…

欢迎使用Java 8之前要重温的10个JDK 7功能

Java 8发布已经快一个月了&#xff0c;我敢肯定&#xff0c;大家都在探索JDK 8的新功能。但是&#xff0c;在您完全研究Java 8之前&#xff0c;是时候重新审视Java 7上引入的一些很棒的功能了。记住&#xff0c;Java 6并没有什么功能&#xff0c;它只与JVM的更改和性能有关&…

java版本号管理_微服务项目中如何管理依赖版本号?

本文是微服务项目代码组织形式三部曲中的第三篇&#xff0c;也是最后一篇&#xff0c;通过这三篇文章&#xff0c;相信大家对于如果组织微服务中的代码已经有了一个基本认知&#xff0c;前面两篇分别是&#xff1a;第三篇相对来说要简单一些&#xff0c;本来没打算写&#xff0…