回答
当使用Play的built-in authentication时,在每个经过验证的请求中,都会在会话中存储具有更新过期时间戳的时间戳。
然后,在验证器中,验证会话到期。
文章How to implement a Session Timeout in Play Framework 2提供这个例子:
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();
}
@Override
public String getUsername(Http.Context ctx) {
// see if user is logged in
if (session("userId") == null)
return null;
// see if the session is expired
String 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 expired
session().clear();
return null;
}
}
// update time in session
String tickString = Long.toString(new Date().getTime());
session("userTime", tickString);
return User.findById(Long.parseLong(session("userId"))).getUsername();
}
}
这需要在应用程序的配置文件(application.conf
)以分钟为sessionTimeout
值。
对不起,迟交的回复,我会尽快回复,看看这是否有效。非常感激。 – supertonsky
我建议在'getUsername'的主体中使用'ctx.session()。replace(“userTime”,tickString);' – malloc4k
'session(String)'包含什么包? –
会话超时
- 会话超时配置项,session.maxAge,以前是一个整数,定义为以秒。现在它是一个持续时间,所以可以用1h或30m等值来指定。不幸的是,如果没有时间单位指定默认单位是毫秒,这意味着配置值3600以前被视为一个小时,但现在被视为3.6秒。您将需要更新您的配置以添加时间单位。
- 1. 处理magento会话超时
- 2. 处理会话超时?
- 3. CAS是如何处理会话超时
- 4. JSF,会话超时处理
- 5. 会话超时处理
- 6. 在ASP.NET MVC中处理会话超时
- 7. 在XrmServiceContext中处理会话超时
- 8. 如何在JavaScript中处理MVC3中的会话超时?
- 9. 在通用http处理程序中处理会话超时
- 10. 如何在会话超时后处理AJAX中的重定向?
- 11. 如何在Angular 2/Java Spring Boot中处理会话超时
- 12. 如何在Spring-security 3.2中处理会话超时3.2
- 13. 如何处理在Django中API会话过期的会话?
- 14. 春季会话超时处理mvc
- 15. 处理会话超时丢失数据
- 16. 处理会话超时而回发
- 17. 客户端处理会话超时
- 18. 处理会话在JavaScript或服务器端的超时
- 19. Spring 3.1:处理会话超时
- 20. cookie过期或会话超时太快
- 21. 自定义会话超时处理
- 22. Grails:处理HTTP会话超时事件
- 23. JSF会话超时&异常处理
- 24. 客户端处理会话超时
- 25. 在Play Framework中处理空查询2.1.4
- 26. 处理会话变量超时
- 27. 如何在Zend Framework中处理会话销毁?
- 28. Play Framework:处理POST params?
- 29. 如何处理会话超时在asp.net 3.5
- 30. 如何保持会话超时处理在Android应用程序
检查内容:HTTP://www.poornerd.com/2014/04/01/how-to-implement-a-session-timeout-in-play-framework-2/ – immutable