回答
當使用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